jdt core - build notes 3.1 stream
java development tooling 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 3.0 (also see a summary of API changes). Maintenance of previous releases of JDT/Core is performed in parallel branches: R3.0.x, R2.1.x, R2.0.x, R1.0.x.

# Eclipse Platform Build Notes
Java Development Tooling Core

Eclipse SDK 3.1M7 - 12th May 2005 - 3.1 MILESTONE 7
Project org.eclipse.jdt.core v_557 (cvs).

## What's new in this drop

### Problem Reports Fixed

94308 [1.5][compiler] @SuppressWarnings("deprecation") does not suppress warnings from javadoc

# Eclipse Platform Build Notes
Java Development Tooling Core

Eclipse SDK 3.1M7 - 12th May 2005
Project org.eclipse.jdt.core v_556 (cvs).

## What's new in this drop

- Enabled by default the optional compiler diagnosis to signal unhandled warning tokens in `@SuppressWarnings` annotations. Note that this warning can itself be turned off using @SuppressWarnings("warningToken").

      * COMPILER / Reporting Unhandled Warning Token for @SuppressWarnings
      *    When enabled, the compiler will issue an error or a warning when encountering a token
      *    it cannot handle inside a @SuppressWarnings annotation.
      *     - option id:         "org.eclipse.jdt.core.compiler.problem.unhandledWarningToken"
      *     - possible values:   { "error", "warning", "ignore" }
      *     - default:           "warning"

- Fix for bug 94718 required the index version to be incremented. Indexes will be automatically regenerated upon subsequent search queries (accounting for indexing notification in search progress dialogs).

### Problem Reports Fixed

94928 [1.5][compiler] NPE in ParameterizedGenericMethodBinding generated by making method generic
93727 Code Formatter fails with Method Parameter Annotations
93075 Invalid source ranges for nested ParameterizedTypes
92360 type binding with isWildcardType() == true should not have isClass() == true
94168 Java annotation is missing in EnumConstantDeclaration
94867 [1.5][compiler] Annotation method should tolerate empty array default value
94747 [1.5][compiler] Error message is not optimal
94718 [1.5][search][annot] Find references in workspace breaks on an annotation
94644 [1.5][compiler] Non-static member type of raw type should be raw
94206 CCE in BindingKeyResolver when restoring array type of method type parameter
94260 [Preferences] preference option missing in Compiler Settings
94262 [1.5] non static class must not be visible through static import
93904 Batch compiler -log option broken for some values
87627 [1.5][search] references to type variable yield non-existent elements in search view
93588 [compiler] java.lang.VerifyError: Looks similar to 60040 but is happening on current release

# Eclipse Platform Build Notes
Java Development Tooling Core

Eclipse SDK 3.1M7 - 9th May 2005
Project org.eclipse.jdt.core v_555 (cvs).

## What's new in this drop

- Code Assist provide the enclosing type reference when cursor is inside a type argument and the completion token is empty (in the same way as method calls).

      p.q.X<<complete here>> // p.q.X<T,U> is proposed.
      p.q.X<Object, <complete here>> //p.q.X<T,U> is proposed

- Code Assist provide the enclosing annotation reference when completion is inside an annotation argument and the completion token is empty (in the same way as method calls).

      @Annot(<complete here>) // p.Annot is proposed.
      @Annot(foo1=0, <complete here>) // p.Annot is proposed.

- In 5.0 compliant mode, changed local inner type naming convention to reflect JLS 13.1 (3rd edition). As a consequence, instead of generating a file named `X$1$A.class`, it will simply be `X$1A.class"`.
- Added optional compiler diagnosis to signal unhandled warning tokens in `@SuppressWarnings` annotations. Note that this warning can itself be turned off using @SuppressWarnings("warningToken").

      * COMPILER / Reporting Unhandled Warning Token for @SuppressWarnings
      *    When enabled, the compiler will issue an error or a warning when encountering a token
      *    it cannot handle inside a @SuppressWarnings annotation.
      *     - option id:         "org.eclipse.jdt.core.compiler.problem.unhandledWarningToken"
      *     - possible values:   { "error", "warning", "ignore" }
      *     - default:           "ignore"

- Added compiler option to control whether @SuppressWarning annotations are active or not. By disabling them, one can quickly revive all hidden warnings.

      * COMPILER / Determine whether @SuppressWarnings is effective
      *    When enabled, the @SuppressWarnings annotation can be used to suppress some compiler warnings.
      *    When disabled, all @SupressWarnings annotations are ignored; i.e., warnings are reported.
      *     - option id:         "org.eclipse.jdt.core.compiler.problem.suppressWarnings"
      *     - possible values:   { "enabled", "disabled" }
      *     - default:           "enabled"

- Added API on `CorrectionEngine` for computing the warning token corresponding to an optional warning ID.

      /**
       * Returns a token which can be used to suppress a given warning using
       * @SuppressWarnings annotation, for a given problem ID
       * ({@link IProblem }). If a particular problem is not suppressable,
       * null will be returned.
       *
       * Note: @SuppressWarnings can only suppress warnings,
       * which means that if some problems got promoted to ERROR using custom compiler
       * settings ({@link IJavaProject#setOption(String, String)}), the
       * @SuppressWarnings annotation will be ineffective.
       *
       * Note: @SuppressWarnings can be argumented with
       * "all" so as to suppress all possible warnings at once.
       *
       * Note: The tokens returned are not necessarily standardized across Java
       * compilers. If you were to use one of these tokens in an @SuppressWarnings
       * annotation in the Java source code, the effects (if any) may vary from
       * compiler to compiler.
       *
       * @param problemID
       *         the ID of a given warning to suppress
       * @return a String which can be used in @SuppressWarnings annotation,
       * or null if unable to suppress this warning.
       * @since 3.1
       */
      public static String getWarningToken(int problemID)

- More warning tokens are now recognized by `@SuppressWarnings`, see list below. Note that these are subject to changing in the near future.
  - all : any warning
  - assertIdentifier : ''assert'' used as identifier
  - boxing : autoboxing conversion
  - charConcat : char[] in String concat
  - conditionAssign : possible accidental boolean assignment
  - constructorName : method with constructor name
  - dep-ann : missing @Deprecated annotation
  - deprecation : deprecation outside deprecated code
  - emptyBlock : undocumented empty block
  - enumSwitch : incomplete enum switch
  - fieldHiding : field hiding another variable
  - finalBound : type parameter with final bound
  - finally : finally block not completing normally
  - indirectStatic : indirect reference to static member
  - intfAnnotation : annotation type used as super interface
  - intfNonInherited : interface non-inherited method compatibility
  - javadoc : invalid javadoc
  - localHiding : local variable hiding another variable
  - maskedCatchBlock : hidden catch block
  - nls : string literal lacking non-nls tag //$NON-NLS-<n>$
  - noEffectAssign : assignment without effect
  - over-ann : missing @Override annotation
  - pkgDefaultMethod : attempt to override package-default method
  - semicolon : unnecessary semicolon, empty statement
  - serial : missing serialVersionUID
  - unqualifiedField : unqualified reference to field
  - unchecked : unchecked type operation
  - unusedArgument : unread method parameter
  - unusedImport : unused import declaration
  - unusedLocal : unread local variable
  - unusedPrivate : unused private member declaration
  - unusedThrown : unused declared thrown exception
  - unnecessaryElse : unnecessary else clause
  - uselessTypeCheck : unnecessary cast/instanceof operation
  - specialParamHiding : constructor or setter parameter hiding another field
  - staticReceiver : non-static reference to static member
  - syntheticAccess : synthetic access for innerclass
  - typeHiding : type parameter hiding another type
  - varargsCast : varargs argument need explicit cast
  - warningToken : unhandled warning token
- SearchMatch now has a implicit field which shows whether the associated element is implicit or not (see bug 94062).
  Added new API methods to access this field:
  - `SearchMatch#isImplicit()`
  - `SearchMatch#setImplicit(boolean)`

### Problem Reports Fixed

94053 [javadoc] Unknown references are not warned for string or href in @see/@link tags
94111 [assist] provide parameter hints for template instantiations
94062 [1.5][search][annot] search for annotation elements incorrect match range
93392 [1.5][search] Reference to implicit annotation element "value" has wrong offset
84968 [1.5][generics] Exception type handling broken in latest milestone
75885 [1.5][compiler] Naming convention for local innerclasses
89426 provide Java class file content type
93826 ArrayIndexOutOfBoundsException when opening type hierarchy
83739 [1.5] support @SuppressWarnings
89850 Duplicate strings of VM path
83750 [perf] Excessive File.isFile calls for clients of JavaModel.getTarget(...)
92210 [search] Search for method declaration in working set (source folder) searches in whole project
93913 wrong resolved type caused by a static import

# Eclipse Platform Build Notes
Java Development Tooling Core

Eclipse SDK 3.1M7 - 6th May 2005
Project org.eclipse.jdt.core v_554 (cvs).

## What's new in this drop

- Code Assist doesn't propose anymore type completion when completion token is empty.
  Note: the code to propose completion when token is empty is not removed. Change the value of Completion.NO_TYPE_COMPLETION_ON_EMPTY_TOKEN to re-enabled this behavior.
- @SuppressWarnings is now supported. Recognized warning names are: `"all"`, `"deprecation"`, `"serial"`, `"unchecked"`, `"finally"`.
- Changed Code Assist options.
  CODEASSIST_FORBIDDEN_REFERENCE_CHECK and CODEASSIST_DISCOURAGED_REFERENCE_CHECK are replaced by CODEASSIST_HIDE_RESTRICTED_REFERENCES.

      /*
       *  CODEASSIST / Hide Proposals for Restricted Completions
       *    When value is "never", never hide proposals for restricted completions.
       *    When value is "error", hide proposals for restricted completions if insertion of these completions would create a compile error.
       *    When value is "warning", hide proposals for restricted completions if insertion of these completions would create a compile error or warning.
       *    To configure the severity of restrictions, "org.eclipse.jdt.core.compiler.problem.forbiddenReference"
       *    option must be used for forbidden reference and "org.eclipse.jdt.core.compiler.problem.discouragedReference"
       *    option must be used for discouraged reference.
       *     - option id:         "org.eclipse.jdt.core.codeComplete.restrictionsCheck"
       *     - possible values:   { "never", "error", "warning" }
       *     - default:           "error"
       */
       public static final String CODEASSIST_HIDE_RESTRICTED_REFERENCES;

- Removed 3.1 APIs `BindingKey#getDeclaringTypeSignature()` and `BindingKey#toSignature()` as they were found error prone. See bug 93105 for details.
- Added support for 'capture' inside Code Assist. Delaring type of a completion proposal is captured for qualified completion.
- Added APIs to replace a range of moved nodes (`ListRewrite#createMoveTarget(first, last, replacingNode, editGroup)`). See bug 91938 for details.

### Problem Reports Fixed

93854 IAE in Util.scanTypeSignature when scanning a signature retrieved from a binding key
93662 Singature#getTypeParameters returns strange signature string
93113 Opening the Type Hierarchy of Object uses 400M of heap
92071 Duplicate entry on classpath with -promiscuous mode
93486 [compiler] Wrong compile errors reported
93487 IType#findMethods fails on vararg methods
90186 resolved key of methods should contain parametrized types
88082 ASTParser#createASTs(..) does not use the given progress monitor
90612 Forbidden types must not be available in Code Assist
93105 Remove unnecessary APIs on BindingKey
93396 [1.5] problem with recovery and enum constant body
92899 Empty extra attributes list should not appear in .classpath
93275 Need ITypeBinding#getDeclaringClass() for capture types
93298 [1.5][compiler] nested statics and templates compilation error
92477 [1.5][compiler] Internal compiler error: NullPointerException in ReferenceBinding.findSuperTypeErasingTo
83083 [1.5][compiler] NPE while checking bounds of type variable
93204 [1.5][compiler] EnumSet.of within generic class
90775 [1.5][compiler] Missing unchecked warning
88202 Javadoc: clarify ITypeBinding#getTypeBounds()
93093 [1.5][dom] Capture binding "? extends Number[]" has bound Object instead of Number[]
93102 [1.5] Cannot restore capture binding from binding key
93082 [1.5][compiler] Eclipse accepts assignment between captures with array-type bounds
91467 [1.5][compiler] Eclipse asks for and then complains about unnecessary cast
92982 [1.5][compiler] Bounds and erasure of capture and type variable bindings
84690 [assist] CompletionProposal.getDeclarationSignature returns null for array types
92821 [javadoc] Organize Imports - M6 - incorrectly retains import when only referered to in javadoc
91542 [1.5][search] JavaModelException on ResolvedSourceMethod during refactoring
92981 Content Assist overrides wrong method
91619 Extraneous exported package
92872 [api] API constants renamed in IProblem
92888 ITypeBinding#isEqualTo(..) is wrong for capture bindings
84224 Need advice for finding duplicate Types
92944 [1.5][search] SearchEngine#searchAllTypeNames doesn't honor enum or annotation element kind
91078 [search] Java search for package reference wrongly identifies inner class as package
92005 AIOBE during content assist
67139 [classpath] n^2 classpath computations
80063 code assist allows overriding super class' private method
82208 [search] BasicSearchEngine#searchAllTypeNames doc
3336 SearchEngine doesn't support CLASS and INTERFACE (1GIEPRK)
90160 [search] SearchEngine.createJavaSearchScope swallows problems
88174 [1.5][search][enum] method declarations not found in anonymous enum
91938 [ast rewrite] new API: move range of nodes and replace

# Eclipse Platform Build Notes
Java Development Tooling Core

Eclipse SDK 3.1M7 - 26th April 2005
Project org.eclipse.jdt.core v_553 (cvs).

## What's new in this drop

- Removed the need to load `java.lang.RuntimeException` and `java.lang.Error` eagerly during compilation when assessing unchecked exception diagnosis. This allows Java class library developpers to be more minimalistic.
- Fix for bug 83230 required the index version to be incremented. Indexes will be automatically regenerated upon subsequent search queries (accounting for indexing notification in search progress dialogs).
- Added support for Javadoc in package-info.java. Compiler now verifies package comment tags syntax and references for this compilation unit. See bug 83804 for further details.

### Problem Reports Fixed

91761 [1.5][compiler] Return statements ignored in anonymous inner classes used as enum constant constructor parameters.
84049 [javadoc][dom] Extended ranges wrong for method name without return type
82673 [search] Refactor->Rename on local class also renames references to different local classes with same name
81062 [builder] Build is aborted even when no errors are occuring (incomplete build path == warning)
83012 [1.5][search][annot] Search for annotations misses references in default and values constructs
92588 Full build in reaction to beginRule failure
92451 code assist failure: new+cast+arrays
92373 [1.5] Can't distinguish capture ITypeBindings by #getKey() or #isEqualTo()
92370 [1.5] IAE in Signature.getParameterCount(..) for method proposal on capture type receiver
92361 [1.5] NPE in ITypeBinding#getJavaElement() for capture binding
92315 [search] NPE in MethodLocator.matchReportReference
86380 [1.5][search][annot] Add support to find references inside annotations on a package declaration
83804 [1.5][javadoc] Missing Javadoc node for package declaration
83501 IBinding#getJavaElement needs better specification
83230 [1.5][search][annot] search for annotation elements does not seem to be implemented yet
89624 Open on selection proposes twice the same entry
92237 IType resolved key: key.toSignature has wrong format
91804 JavaProject.isOnClasspath(IJavaElement) should avoid resolving classpath
92059 IVariableBinding#getJavaElement() thows NPE for array's 'length' field
84551 [1.5][compiler] compiler must not allow implicit static reference to outer type
89440 [1.5][problems] Reference to member of parameterized type incorrectly marked as error
84973 [1.5] parameterized inner type is illegal without parameterized outer type
90484 [1.5][compiler] Missing override annotation conflicts with Javac error checking
81831 [1.5][compiler] JDT compiler tries to infer the wildcard type "too early" in case of recursive generic type-bounds
89274 [1.5][compiler] Enums in hierarchies with generics produces unnecessary warnings and errors
90137 [1.5][compiler] Collections.sort (List<Comparable>) compile error
90879 [1.5][compiler] Cannot sort a raw Comparable
85281 [1.5][compiler] A<++Element> should not be assignable a A<+Element>
91091 [quick assist] Cannot rename type name in file
90881 [1.5][compiler] NPE in builder
84496 [1.5][compiler] Capture Conversion not correctly implemented
92086 [index] ClassCastException in DiskIndex.mergeCategory()

# Eclipse Platform Build Notes
Java Development Tooling Core

Eclipse SDK 3.1M7 - 20th April 2005
Project org.eclipse.jdt.core v_552 (cvs).

## What's new in this drop

### Problem Reports Fixed

91772 Exported plugin dependencies are missing from the classpath
88769 IMethodBinding#getJavaElement() drops extra array dimensions and varargs
88892 [1.5] IMethodBinding#getJavaElement() returns nonexistent IMethods (wrong parameter types)
91445 IMethodBinding.getJavaElement() returns an "unopen" IMethod

# Eclipse Platform Build Notes
Java Development Tooling Core

Eclipse SDK 3.1M7 - 19th April 2005
Project org.eclipse.jdt.core v_551 (cvs).

## What's new in this drop

- Added performance instrumentation to track performance problem (use PerformanceStats from Core).
  To enabled this Jdtcore instrumentation, you must add some new entries inside .options.
  - `org.eclipse.jdt.core/perf/completion=300`: add an entry to performance.log if CompletionEngine.complete() take more than 300ms
  - `org.eclipse.jdt.core/perf/selection=300` add an entry to performance.log if SelectionEngine.select() take more than 300ms
  - `org.eclipse.jdt.core/perf/javadeltalistener=500` add an entry to performance.log if the call to the listener take more than 500ms
  - `org.eclipse.jdt.core/perf/variableinitializer=5000` add an entry to performance.log if the initialization take more than 5000ms
  - `org.eclipse.jdt.core/perf/containerinitializer=5000` add an entry to performance.log if the initialization take more than 5000ms
  - `org.eclipse.jdt.core/perf/reconcile=1000` add an entry to performance.log if ComplationUnit.reconcile() take more than 1000ms
  Current default thresholds are not accurate and must be adjusted.
- Added support for completion inside single member annotation and annotation attribute value.

      @MyAnnotation(<complete here>
      @MyAnnotation(foo=<complete here>

### Problem Reports Fixed

91861 Deadlock on startup while computing namelookup
89411 ICompilationUnit#becomeWorkingCopy takes 18% of startup
91716 [prefs] Too many calls to EclipsePreference#get while scanning full workspace units
90615 Proposal for boolean
84877 Performance on startup
91497 [prefs] JavaCore should not give access to default preferences
90414 [content assist] Content Assist fails when escape sequence present
91438 Need definitive set of jdt-core tests checked into cvs
91498 Reconcile still sees old access rules
91221 Code assist stopped working
91371 [assist] Stack Overflow - Field completion
91098 The Mark Occurrences feature does not mark all occurrences
79288 Code assist offers types which are out of scope ==> compile errors
88298 [1.5][assist] no completion inside SingleMemberAnnotation
91238 Malfunction of Format function
91160 SourceField.getConstant() incorrect for char constants

# Eclipse Platform Build Notes
Java Development Tooling Core

Eclipse SDK 3.1M7 - 12th April 2005
Project org.eclipse.jdt.core v_550 (cvs).

## What's new in this drop

- Fix for bug 90431 required the index version to be incremented. Indexes will be automatically regenerated upon subsequent search queries (accounting for indexing notification in search progress dialogs).

### Problem Reports Fixed

89096 Convert to new platform NLS support
90302 [javadoc] {@inheritedDoc} should be inactive for non-overridden method
90779 [search] Constructor Declaration search with ignoring declaring and return type also ignores type name
90915 [1.5][search] NPE in PatternLocator
90266 [select] Code select returns null when there's a string including a slash on same line
90605 Severity is not severe enough
89470 Generic Method override compatibility
90446 Update CreateTypeMemberOperation for changes in Indents
90431 Improve path lookup in scopes
90423 [1.5][compiler] Generic method overloading. Javac allows but eclipse doesn't
90213 [Formatter] Redundant space in multidimensional array literals
88263 [1.5][compiler] Autobox and extends

# Eclipse Platform Build Notes
Java Development Tooling Core

Eclipse SDK 3.1M7 - 5th April 2005
Project org.eclipse.jdt.core v_549 (cvs).

## What's new in this drop

### Problem Reports Fixed

89815 Types not found using Open Type and search for declaration
77809 [format] Line wrapping for enum constants
49896 Formatters should have option to use tabs only for leading indents.
89777 Improve doc formatting for IMethodBinding.getMethodDeclaration()
90111 [1.5][compiler] Compiler warning "tagged with @Override" not correct with static methods

# Eclipse Platform Build Notes
Java Development Tooling Core

Eclipse SDK 3.1M6 - 1st April 2005
Project org.eclipse.jdt.core v_548 - 3.1 MILESTONE 6 (cvs).

## What's new in this drop

- New Code Formatter built-in profile has been added: "Eclipse [built-in]".
  This new profile is based on "Java Conventions" but uses tab character (instead of space) and set tab size to 4 (instead of 8).
  JavaCore was using these values by default but they were wrongly showed as "Java Conventions" in Code Formatter preference page. This problem is now fixed (see bug 89739).
  Code formatter behavior is still fully compatible with previous milestones for users who have not modified Code Formatter options in their workspace. However, users who have explicitely modified them and have troubles with use of tab character, should open Code Formatter preference page and either select this new "Eclipse" profile or verify state of "Use of tab character" check-box.

### Problem Reports Fixed

89982 [1.5][compiler] Internal failure during missing enum case diagnosis
89848 [search] does not find method references in anonymous class of imported jarred plugin
89778 NPE in bindThrownExceptions
89710 [compiler] local variable range is wrong.

# Eclipse Platform Build Notes
Java Development Tooling Core

Eclipse SDK 3.1M6 - 31st March 2005
Project org.eclipse.jdt.core v_547 (cvs).

## What's new in this drop

### Problem Reports Fixed

89739 [prefs] Default for formatter should be Tab characters, not spaces
89448 Java Generics code throws a java.lang.NoClassDefFoundError

# Eclipse Platform Build Notes
Java Development Tooling Core

Eclipse SDK 3.1M6 - 31st March 2005
Project org.eclipse.jdt.core v_546 (cvs).

## What's new in this drop

- In order to fix bugs 49896 and 77809, we added the following two APIs:
  - `org.eclipse.jdt.core.formatter.DefaultCodeFormatterConstants#FORMATTER_USE_TABS_ONLY_FOR_LEADING_INDENTATIONS`
  - `org.eclipse.jdt.core.formatter.DefaultCodeFormatterConstants#FORMATTER_ALIGNMENT_FOR_ENUM_CONSTANTS`

### Problem Reports Fixed

89477 [1.5][select] ArrayStoreException in SelectionEngine
73658 [1.5] Not all new 1.5 formatter options seem to work

# Eclipse Platform Build Notes
Java Development Tooling Core

Eclipse SDK 3.1M6 - 29th March 2005
Project org.eclipse.jdt.core v_545 (cvs).

## What's new in this drop

### Problem Reports Fixed

81497 [format] Wrong feeding after array-initialization

# Eclipse Platform Build Notes
Java Development Tooling Core

Eclipse SDK 3.1M6 - 29th March 2005
Project org.eclipse.jdt.core v_544 (cvs).

## What's new in this drop

- In order to fix 73104, we have added the following new API:
  - `org.eclipse.jdt.core.formatter.DefaultCodeFormatterConstants#FORMATTER_INDENTATION_SIZE`
  - Added new API `org.eclipse.jdt.core.formatter.DefaultCodeFormatterConstants#MIXED`. This new constant is used for the option: `org.eclipse.jdt.core.formatter.DefaultCodeFormatterConstants#FORMATTER_TAB_CHAR`.
- Added new API on `org.eclipse.jdt.core.dom.ITypeBinding#getDeclaringMethod()`. See bug 86580 for details.

### Problem Reports Fixed

89312 API: BindingKey should probably be final
89318 [formatter] Option FORMATTER_INSERT_SPACE_AFTER_CLOSING_ANGLE_BRACKET_IN_TYPE_ARGUMENTS has no effect
89302 [formatter] Insert space after comma in enum constants has no effect
73104 [format] indentation amount tied to tab size
84872 Improve string sharing in JavaModelCache
68148 [model] Leaking persisted containers
89110 Redundant information in SourceTypeElementInfo
89092 Redundant information in ImportDeclarationElementInfo
89090 Redundant information in SourceFieldElementInfo
89014 IMethodBinding#isEqualTo(..) returns true for methods in different anonymous classes
86580 API on ITypeBinding for asking about the declaring node of type variable
88575 [1.5] treatment of Object.getClass() not API compliant

# Eclipse Platform Build Notes
Java Development Tooling Core

Eclipse SDK 3.1M6 - 24th March 2005
Project org.eclipse.jdt.core v_543 (cvs).

## What's new in this drop

- Added new kinds for the code formatter:
  - `org.eclipse.jdt.core.formatter.CodeFormatter#K_SINGLE_LINE_COMMENT`
  - `org.eclipse.jdt.core.formatter.CodeFormatter#K_MULTI_LINE_COMMENT`
  - `org.eclipse.jdt.core.formatter.CodeFormatter#K_JAVA_DOC`
- Added new options to format comments:
  - `org.eclipse.jdt.core.formatter.DefaultCodeFormatterConstants#FORMATTER_COMMENT_CLEAR_BLANK_LINES`
  - `org.eclipse.jdt.core.formatter.DefaultCodeFormatterConstants#FORMATTER_COMMENT_FORMAT_HEADER`
  - `org.eclipse.jdt.core.formatter.DefaultCodeFormatterConstants#FORMATTER_COMMENT_FORMAT_HTML`
  - `org.eclipse.jdt.core.formatter.DefaultCodeFormatterConstants#FORMATTER_COMMENT_FORMAT_SOURCE`
  - `org.eclipse.jdt.core.formatter.DefaultCodeFormatterConstants#FORMATTER_COMMENT_FORMAT`
  - `org.eclipse.jdt.core.formatter.DefaultCodeFormatterConstants#FORMATTER_COMMENT_INDENT_PARAMETER_DESCRIPTION`
  - `org.eclipse.jdt.core.formatter.DefaultCodeFormatterConstants#FORMATTER_COMMENT_INDENT_ROOT_TAGS`
  - `org.eclipse.jdt.core.formatter.DefaultCodeFormatterConstants#FORMATTER_COMMENT_INSERT_EMPTY_LINE_BEFORE_ROOT_TAGS`
  - `org.eclipse.jdt.core.formatter.DefaultCodeFormatterConstants#FORMATTER_COMMENT_INSERT_NEW_LINE_FOR_PARAMETER`
  - `org.eclipse.jdt.core.formatter.DefaultCodeFormatterConstants#FORMATTER_COMMENT_LINE_LENGTH`
- Added constant for the javadoc location attribute name: `IClasspathAttribute#JAVADOC_LOCATION_ATTRIBUTE_NAME`.
- Added API to create an array type binding key from a type key and array dimension: `BindingKey#createArrayTypeBindingKey(String typeKey, int arrayDimension)`
- Added API to create a binding key from a type name: `BindingKey#createTypeBindingKey(String typeName)`.
- Added API to create a parameterized or raw type binding key from a generic type binding key and argument type binding keys: `BindingKey#createParameterizedTypeBindingKey(String genericTypeKey, String[] argumentTypeKeys)`.
- Added API to create a type variable binding key from a type variable name and a declaring key: `createTypeVariableBindingKey(String typeVariableName, String declaringKey)`
- Added API to create a wildcard binding key from a type key and wildcard kind: `BindingKey#createWildcardTypeBindingKey(String typeKey, char kind)`
- Added API to query whether a field is an enum constant: `IField#isEnumConstant()`
- Added API to code assist for access rule management.
  - Added JavaCore#CODEASSIST_FORBIDDEN_REFERENCE_CHECK and JavaCore#CODEASSIST_DISCOURAGED_REFERENCE_CHECK options
  - Removed JavaCore#CODEASSIST_RESTRICTIONS_CHECK (Replaced by CODEASSIST_FORBIDDEN_REFERENCE)
  - Added CompletionProposal#getAccessibility()

### Problem Reports Fixed

89088 [performance] Scanner is sending 2 messages per identifier character
83502 Need API to create binding keys.
88845 NPE in codeComplete for supertype that extends invisible type
70827 [Search] wrong reference match to private method of supertype
88300 [search] Reference search result is changed by placement of private method
87173 Surface compiler information about boxing/unboxing in the DOM AST (implicit conversion)
88841 IAE while opening ASTView
88548 Need to get constant value on expression
88921 [Formatter] Adopt comment formatter from JDT/UI inside JDT/Core API
88849 Infinite loop in scanner when using eof=Integer.MAX_VALUE
88859 Constant for the name of the Javadoc attribute
71460 [model] Non *.java file association with Java contents.
88756 [codeassist] Code assist propose anonymous enum
76863 [1.5][model] IField should offer a method isEnumConstant
88757 [API] SwitchStatement.statements() returns list of SwitchGroups

# Eclipse Platform Build Notes
Java Development Tooling Core

Eclipse SDK 3.1M6 - 22nd March 2005
Project org.eclipse.jdt.core v_542 (cvs).

## What's new in this drop

- The internal build state format has changed and a full build is expected when restarting an existing workspace with this version of JDT Core.
- Added the following APIs to control access rules severity:
  - `org.eclipse.jdt.core.IAccessRule`
    - `int K_ACCESSIBLE;`
    - `int K_NON_ACCESSIBLE;`
    - `int K_DISCOURAGED;`
    - `IPath getPattern();`
    - `int getKind();`
  - `org.eclipse.jdt.core.JavaCore`
    - `String COMPILER_PB_DISCOURAGED_REFERENCE;`
    - `IAccessRule newAccessRule(IPath pattern, int kind);`
    - `IClasspathEntry newContainerEntry( IPath containerPath, IAccessRule[] accessRules, IClasspathAttribute[] extraAttributes, boolean isExported);`
    - `IClasspathEntry newLibraryEntry( IPath path, IPath sourceAttachmentPath, IPath sourceAttachmentRootPath, IAccessRule[] accessRules, IClasspathAttribute[] extraAttributes, boolean isExported);`
    - `IClasspathEntry newProjectEntry( IPath path, IAccessRule[] accessRules, boolean combineAccessRules, IClasspathAttribute[] extraAttributes, boolean isExported);`
    - `IClasspathEntry newVariableEntry( IPath variablePath, IPath variableSourceAttachmentPath, IPath variableSourceAttachmentRootPath, IAccessRule[] accessRules, IClasspathAttribute[] extraAttributes, boolean isExported);`
  - `org.eclipse.jdt.core.IClasspathEntry`
    - `boolean combineAccessRules();`
    - `IAccessRule[] getAccessRules();`
- Code select now works into Javadoc comment wherever a reference can be specified (ie. @see, @link, @linkplain, @throws, @exception, @param or @value tags)
  (see bug 54968).
  For example, hit F3 with cursor located in `MyClass`, in following Javadoc comment:

      /**
       * @see MyClass This is my class
       */

  will open editor on MyClass.java file.
- New CodeSelect feature: Code select return an element if the selection is an enum constant inside a switch label.

      Colors c;
      swith(c) {
        case BLUE:
        case RED; // select RED
      }

- Added new kind of type signature: `Signature#WILDCARD_TYPE_SIGNATURE`.
  `Signature#getTypeSignatureKind(char[])` and `Signature#getTypeSignatureKind(String)` now return `Signature#WILDCARD_TYPE_SIGNATURE` if the signature is a wildcard : * or +Ljava.lang.Object; or -Ljava.lang.Object;
- Added new completion API to describe context in which the completion occurs.
  Currently only the expected types of the potential completion proposals are proposed.

       X x = zzz<complete here>

  In this example the expected type is `X`. It is not mandatory to a proposal to respect this expectation and it is possible that there is no completion proposal.

      public class CompletionContext  {
        public char[][] getExpectedTypesSignatures() {...}
        public char[][] getExpectedTypesKeys() {...}
      }

  Client must override `CompletionRequestor#acceptContext(..)` to know the context. This method call ocurs after the call to `beginReporting()` and before the call to any `accept(CompletionProposal)` method.

      public class CompletionRequestor {
        ...
        public void acceptContext(CompletionContext context) {..}
        ...
      }

### Problem Reports Fixed

87644 Control access rules severity
88625 [1.5][compiler] Invalid Enum comparing (Build id: I20050219-1500)
87998 [1.5][compiler] Enum constants generate warnings about synthetic constructor access
88562 Internal compiler error when compiling GNU Classpath
88295 [1.5][assist] too many completion on enum case label
88446 [1.5] annotations declared inside generic classes are not visible at runtime
54968 [javadoc][select] ICodeAssist#codeSelect doesn't work for member references in javadoc
85379 [1.5][select][enum] Code resolve on enum in switch
88429 Redundant information in SourceMethodElementInfo
88428 Class file reader's method info still hold on byte array
88223 [1.5][compiler] Local enums are not reported as error
88224 [1.5][DOM] ASTRewriteAnalyzer blows up with local enums
86971 [1.5][codeselect] F3 should perform if selecting '@Deprecated'
85713 Signature.getTypeSignatureKind does not like wildcard types
87762 [model] suspicious huge amount of IPackageFragmentRoot[]
88252 Deleting a MemberValuePair with a NormalAnnotation child does not work
87818 [compiler] local enums are illegal, but does this need to be a syntax error?
69657 [dom] deprecate JLS2 once JLS3 is fully supported
81797 NPE in SortElementBuilder
80036 EmptyStackException in CompilationUnitSorter
88187 Unexpected deprecation warnings during full build
88094 [1.5] compiler accepts two methods with same erasure
86970 [codeassist] Add an API on completion proposal API to surface the expected type
88124 More deprecated warnings than expected

# Eclipse Platform Build Notes
Java Development Tooling Core

Eclipse SDK 3.1M6 - 15th March 2005
Project org.eclipse.jdt.core v_541 (cvs).

## What's new in this drop

- Compiler now recognizes `@Deprecated` annotations, and treats them equivalent to doc comment `/** @deprecated */`.
- Added optional compiler diagnosis to flag deprecated constructs missing a proper `@Deprecated` annotation (to encourage using annotations instead of doc comment tag). Corresponding problem IDs are: `IProblem.FieldMissingDeprecatedAnnotation`, `IProblem.MethodMissingDeprecatedAnnotation`, `IProblem.TypeMissingDeprecatedAnnotation`.

      * COMPILER / Reporting Missing @Deprecated Annotation
      *    When enabled, the compiler will issue an error or a warning whenever encountering a declaration
      *    carrying a @deprecated doc tag but has no corresponding @Deprecated annotation.
      *     - option id:        "org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation"
      *     - possible values:   { "error", "warning", "ignore" }
      *     - default:           "ignore"

- JLS2 API have been deprecated (see bug 69657).
- Allowed javadoc reference to varargs methods (see bug 87845).
  The 1.5 spec for the Javadoc tool does not mention the possibility of a variable arity indicator in method references. However, the 1.5 Javadoc tool itself does indeed support it. Since it makes sense to have a way to explicitly refer to variable arity methods, it seems more likely that the Javadoc spec is wrong in this case.
  Following API methods were added to `MethodRefParameter`:

      /**
       * The "varargs" structural property of this node type (added in JLS3 API).
       * @since 3.1
       */
      public static final SimplePropertyDescriptor VARARGS_PROPERTY;
      /**
       * Returns whether this method reference parameter is for
       * the last parameter of a variable arity method (added in JLS3 API).
       *
       * Note that the binding for the type Fooin the vararg method
       * reference #fun(Foo...) is always for the type as
       * written; i.e., the type binding for Foo. However, if you
       * navigate from the MethodRef to its method binding to the
       * type binding for its last parameter, the type binding for the vararg
       * parameter is always an array type (i.e., Foo[]) reflecting
       * the way vararg methods get compiled.
       *
       *
       * @return true if this is a variable arity parameter,
       *    and false otherwise
       * @exception UnsupportedOperationException if this operation is used in
       * a JLS2 AST
       * @since 3.1
       */
      public boolean isVarargs();
      /**
       * Sets whether this method reference parameter is for the last parameter of
       * a variable arity method (added in JLS3 API).
       *
       * @param variableArity true if this is a variable arity
       *    parameter, and false otherwise
       * @since 3.1
       */
      public void setVarargs(boolean variableArity);

- Added new flags on nature of match to specify that declaring or return type should be ignored during the search (see bug 80264).
  These flags are defined on `IJavaSearchConstants` interface:

      /**
       * Ignore declaring type while searching result.
       * Can be used in conjunction with any of the nature of match.
       * @since 3.1
       */
      int IGNORE_DECLARING_TYPE = 0x10;
      /**
       * Ignore return type while searching result.
       * Can be used in conjunction with any of the nature of match.
       * Note that:
       * 	- for fields search, pattern will ignore field type
       * 	- this flag will have no effect for types search
       * @since 3.1
       */
      int IGNORE_RETURN_TYPE = 0x20;

  Note that these flags are active only for search of declarations (ie. `IJavaSearchConstants.DECLARATIONS` and `IJavaSearchConstants.ALL_OCCURRENCES`) and while searching for IJavaElement (see doc of `SearchPattern.createPattern(IJavaElement, int)` API method).
- Improved API for type name requestor. Abstract class `TypeNameRequestor` replaces interface `ITypeNameRequestor` which is deprecated.
  There's now only a single method for type name requestor while accepting a type:

      /**
       * Accepts a top-level or a member type.
       *
       * The default implementation of this method does nothing.
       * Subclasses should override.
       *
       * @param modifiers the modifier flags of the type. Note that for source type,
       *	these flags may slightly differ from thoses get after resolution.
       *	For example an interface defined by interface A {}, although obviously public,
       *	will be returned false by Flags.isPublic(modifiers) due to the fact
       *	that its declaration does not explicitely define public flag.
       *	@see org.eclipse.jdt.core.Flags
       * @param packageName the dot-separated name of the package of the type
       * @param simpleTypeName the simple name of the type
       * @param enclosingTypeNames if the type is a member type,
       *	the simple names of the enclosing types from the outer-most to the
       *	direct parent of the type (for example, if the class is x.y.A$B$C then
       *	the enclosing types are [A, B]. This is an empty array if the type
       *	is a top-level type.
       * @param path the full path to the resource containing the type. If the resource is a .class file
       *	or a .java file, this is the full path in the workspace to this resource. If the
       *	resource is an archive (that is, a .zip or .jar file), the path is composed of 2 paths separated
       *	by IJavaSearchScope.JAR_FILE_ENTRY_SEPARATOR:
       *	the first path is the full OS path to the archive (if it is an external archive),
       *	or the workspace relative IPath to the archive (if it is an internal archive),
       *	the second path is the path to the resource inside the archive.
       */
      public void acceptType(int modifiers, char[] packageName, char[] simpleTypeName, char[][] enclosingTypeNames, String path)

  Clients can now distinguish Annotation, Enum, Interface and Class using `Flags` API methods on `modifiers` parameter.
- Added support for package-info.java. This allows to define annotations on the package declaration. See bug 86167 for further details.
- Added API `JavaCore#newProjectEntry(IPath, IPath[], IPath[], boolean, IClasspathAttribute[], boolean)` that take a 'combineAccessRestrictions' flag to control whether access restrictions of exported libraries of the project should be combined with the access restrictions of this project entry.
- Added API method `AST#newName(String qualifiedName)` for creating `SimpleName` or `QualifiedName` nodes depending on the form of the given name string.

### Problem Reports Fixed

83643 [1.5] @Deprecated members not 'slashed'
86291 [1.5][compiler] Annotation attribute see members of the annotated type
69657 [dom] deprecate JLS2 once JLS3 is fully supported
77349 [compiler] ClassFormatError when accessing clone() or finalize() methods from an interface
87956 compiling error on jdk1.5 collection generics
87900 Error 'Requesting Java AST from selection': Bug in the Java AST parser
87754 [1.5][javadoc][dom] Type of ArrayType component type inside MethodRef has no binding
87845 [1.5][dom][javadoc] allow javadoc references to vararg methods
87778 [search] doesn't find all declarations of method with covariant return type
80264 [search] Search for method declarations in workspace, disregarding declaring type
85924 [1.5][compiler[ code generation error in M5 w/regard to generics
87849 [AST] SimpleName.setIdentifier() not detecting bogus identifiers
86779 AST#resolveWellKnownType(..) should support primitive type wrappers
85900 [1.5] [compiler] internal compiler reports name clash
87777 Bindings.isEqualTo returns false for equal bindings
86902 [1.5][compiler] Raw field access is not flagged as unsafe type operation
81498 [search] ITypeNameRequestor should support enums and annotations as well
87490 Internal compiler error
85491 [1.5] Compiler rejects autoboxing-calls to overloaded varargs methods as ambiguous
87613 Access restrictions should only apply to project's own package fragment roots
86167 [1.5] Add support for package-info.java
87350 IllegalArgumentException when converting AST with invalid enum body declaration
85262 [1.5] Bound mismatch: type R is not a valid substitute for the bounded parameter...
87498 StackOverflowError when marking occurrences of Comparable in Collections.min(..)
87481 [1.5] type reference in CastExpression is generic type instead of parameterized
87463 The built-in Eclipse compiler behaves differently than IBM or Sun JDK
85226 [1.5] EnumConstantDeclaration should declare resolveConstructorBinding
36938 [plan item][1.5] Add early support for J2SE 1.5 features
87404 [javadoc] Unexpected not defined warning on constructor
85811 BindingKey.toSignature should return method signature for methods
87411 [dom] API: ast.newName(String qualifiedName)

# Eclipse Platform Build Notes
Java Development Tooling Core

Eclipse SDK 3.1M6 - 8th March 2005
Project org.eclipse.jdt.core v_540 (cvs).

## What's new in this drop

### Problem Reports Fixed

83693 [search][javadoc] References to methods/constructors: range does not include parameter lists
87273 [1.5][compiler] Code with generics compiles, but throws a NoSuchMethodError when executed
87050 ASTParser#createASTs(..) cannot resolve method type parameter binding from key
83002 [1.5] Compiler generates incorrect signature for throws clause.
87318 [1.5][compiler] Array.asList(int[]) should be accepted
87171 Find declaring node doesn't work for methods/fields using type parameters
86908 Code formatter fails to format when this code is present
86967 [1.5][dom] NPE in BindingKeyResolver for multi-level parameterized type binding
86898 [1.5][compiler] compiler should flag unchecked cast
87267 [1.5][compiler] cast from Integer[] to int[] should fail
82830 AST: String concatenation represented as single node
83393 [1.5][javadoc] reference to vararg method also considers non-array type as correct
83285 [javadoc] Javadoc reference to constructor of secondary type has no binding / not found by search
87042 Passing null as first vararg makes parameter null (3.1M4)
86906 [1.5][dom] SourceType#createField fails for enums
86878 Parameterized varargs causes Java formatter to fail
80221 [dom][javadoc] No Javadoc comment node when return type missing
86901 [1.5][search] Static import method references not found in unused import

# Eclipse Platform Build Notes
Java Development Tooling Core

Eclipse SDK 3.1M6 - 1st March 2005
Project org.eclipse.jdt.core v_539 (cvs).

## What's new in this drop

- Fix for bug 83319 required the index version to be incremented. Indexes will be automatically regenerated upon subsequent search queries (accounting for indexing notification in search progress dialogs).
- Added optional compiler diagnosis to flag incomplete enum switch statements. Corresponding problem ID is: `IProblem.MissingEnumConstantCase`

      * COMPILER / Reporting Incomplete Enum Switch
      *    When enabled, the compiler will issue an error or a warning whenever an enum constant has
      *    no corresponding case label in an enum switch statement
      *    type has no case label matching an enum constant.
      *     - option id:        "org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch"
      *     - possible values:   { "error", "warning", "ignore" }
      *     - default:           "ignore"

- Added API `org.eclipse.jdt.core.dom.CompilationUnit#getJavaElement()` to retrieve the compilation unit or class file the compilation unit node was created from.
- Added API `IMethodBinding#isSubsignature(IMethodBinding)` to find out if a method's signature is a subsignature of another method.
- Added optional compiler diagnosis to flag method overriding a superclass method, but missing proper `@Override` annotation. Corresponding problem ID is: `IProblem.MissingOverrideAnnotation`

      * COMPILER / Reporting Missing @Override Annotation
      *    When enabled, the compiler will issue an error or a warning whenever encountering a method
      *    declaration which overrides a superclass method but has no @Override annotation.
      *     - option id:        "org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation"
      *     - possible values:   { "error", "warning", "ignore" }
      *     - default:           "ignore"

- New CodeAssist feature: Enum constant are proposed inside switch label if the expression is an enum.

      Colors c;
      swith(c) {
        case BLUE:
        case RED<complete here>
      }

- New CodeAssist feature: Annotation's attribute name are proposed.

      @Annot(attr<complete here>=value)

  To propose this new completion kind a new API has been added: CompletionProposal.ANNOTATION_ATTRIBUTE_REF.

      /**
       * Completion is a reference to annotation's attribute.
       * This kind of completion might occur in a context like
       * <code>"@Annot(attr^=value)"</code> and complete it to
       * <code>"@Annot(attribute^=value)"</code>.
       * <p>
       * The following additional context information is available
       * for this kind of completion proposal at little extra cost:
       * <ul>
       * <li>{@link #getDeclarationSignature()} -
       * the type signature of the annotation that declares the attribute that is referenced
       * </li>
       * <li>{@link #getFlags()} -
       * the modifiers flags of the attribute that is referenced
       * </li>
       * <li>{@link #getName()} -
       * the simple name of the attribute that is referenced
       * </li>
       * <li>{@link #getSignature()} -
       * the type signature of the attribute's type (as opposed to the
       * signature of the type in which the referenced attribute
       * is declared)
       * </li>
       * </ul>
       * </p>
       *
       * @see #getKind()
       */
       public static final int ANNOTATION_ATTRIBUTE_REF = 13;

### Problem Reports Fixed

83319 [1.5][search] Search does not find references to statically imported methods
86838 [1.5] [compiler] Eclipse compiles parameterized code that javac says is "is not within its bound"
84121 [1.5][search][varargs] reference to type reported as inaccurate in vararg
83388 [search] SearchRequestor reports 'null' as match
86775 [1.5][compiler] Infer Generic Types Arguments throws NPE
86596 [search] Search for type finds segments in import
79378 [search] IOOBE when inlining a method
68825 [compiler][1.5] detect not-exhaustive enum switches
81377 [1.5][search] Semantics of search for methods with generics
84944 [1.5][builder] Parameterized return type is sometimes not visible.
83770 [1.5] ITypeBinding getQualifiedName doesn't cover the case of parameterized member type
84140 The type binding of a vararg should be an array not a simple type
83100 [5.0] need IVariableBinding.isGeneric/Parametrized, getGeneric..
86663 [DOM] AbortCompilation should not abort the creation of the tree
86463 [1.5][compiler] Compiler-Bug using generics
85815 [1.5] warn when raw iterator is used
86611 [1.4] 1.5 power double causes compiler internal failure
86531 Javadoc: class AST has several parameterless methods claiming to throw IllegalArgumentException
86217 NPE resolving bounds of Type Variable
84554 [1.5] code assist in enum switch statements
75702 [dom] Need a way to get back from an AST to the originating ICompilationUnit
86410 formatting generics type parameters
86487 [1.5] infinite loop in enhanced for statement when the current element is optimized out
73676 [dom] Need API on bindings for overriding and assignment rules
72258 [model] Should be able to dynamicaly set the size of Java model cache
84562 [DCR][1.5][options] Optional warning/error to avoid accidental overrides with JDK 5.0
85538 [1.5] compiler does not reject cyclic annotation element types
86141 [recovery] ClassCastException with annotation of parameter
86179 [1.5] Type parameters lost with nested inheritance and generics

# Eclipse Platform Build Notes
Java Development Tooling Core

Eclipse SDK 3.1M6 - 22nd February 2005
Project org.eclipse.jdt.core v_538 (cvs).

## What's new in this drop

- Inclusion/exclusion filters used as import restrictions have been renamed into 'accessible files' and 'non accessible files' patterns. The following APIs have been added on `IClasspathEntry`: `getAccessibleFiles()` and `getNonAccessibleFiles()`. These are valid only for library, project, container and variable entries. `getInclusionPatterns()` and `getExclusionPatterns()` temporary return the accessible files and non accessible files patterns for these entries.
- Added ability to associate classpath attributes to a classpath entry (see `IClasspathAttribute`). A classpath attribute is created using `JavaCore#newClasspathAttribute(String, String)`. Then one can associate this attribute with a classpath entry using one of:
  - `JavaCore#newContainerEntry(IPath containerPath, IPath[] accessibleFiles, IPath[] nonAccessibleFiles, IClasspathAttribute[] extraAttributes, boolean isExported)`
  - `JavaCore#newLibraryEntry(IPath path, IPath sourceAttachmentPath, IPath sourceAttachmentRootPath, IPath[] accessibleFiles, IPath[] nonAccessibleFiles, IClasspathAttribute[] extraAttributes, boolean isExported)`
  - `JavaCore#newProjectEntry(IPath path, IPath[] accessibleFiles, IPath[] nonAccessibleFiles, IClasspathAttribute[] extraAttributes, boolean isExported)`
  - `JavaCore#newSourceEntry(IPath path, IPath[] inclusionPatterns, IPath[] exclusionPatterns, IPath specificOutputLocation, IClasspathAttribute[] extraAttributes)`
  - `JavaCore#newVariableEntry(IPath variablePath, IPath variableSourceAttachmentPath, IPath variableSourceAttachmentRootPath, IPath[] accessibleFiles, IPath[] nonAccessibleFiles, IClasspathAttribute[] extraAttributes, boolean isExported)`
- Added optional compiler diagnosis when a type parameter declaration is hiding another type. Corresponding problem ID is: `IProblem.TypeParameterHidingType`

      * COMPILER / Reporting Type Parameter Declaration Hiding another Type
      *    When enabled, the compiler will issue an error or a warning whenever a type parameter
      *    declaration is hiding some type.
      *     - option id:         "org.eclipse.jdt.core.compiler.problem.typeParameterHiding"
      *     - possible values:   { "error", "warning", "ignore" }
      *     - default:           "warning"

- The predicates `isInterface()` on Java element and DOM AST are now answering `true` for annotation types. Indeed, annotation types are allowed to be implemented just like regular interfaces.
- Added optional compiler diagnosis signalling usage of an annotation type as a super interface. Corresponding problem ID is: `IProblem.AnnotationTypeUsedAsSuperInterface`

      * COMPILER / Reporting Use of Annotation Type as Super Interface
      *    When enabled, the compiler will issue an error or a warning whenever an annotation type is used
      *    as a super-interface. Though legal, this is discouraged.
      *     - option id:         "org.eclipse.jdt.core.compiler.problem.annotationSuperInterface"
      *     - possible values:   { "error", "warning", "ignore" }
      *     - default:           "warning"

### Problem Reports Fixed

72704 [compiler][1.5] unexpected IBindings and class files with conflicting method argument types
85397 [1.5][enum] erroneous strictfp keyword on enum type produces error on constructor
83321 [1.5][assist][enum] no override completion proposals in type when followed by a package visible enum
85402 [1.5][assist] NPE while trying to complete on empty annotation
85290 [1.5] Code assist for annotations
85810 [1.5][search] Missed type parameter reference in implements clause
85421 [1.5][search] NPE while searching type parameter reference in workspace
85432 Make jdtcore.jar an executable jar
85933 Type parameters in anonymous type is missing
82429 [1.5] Need emulation of Unicode 4 using 1.4 libraries
85062 [compiler] Implicit static method invocation should target the receiver type not the declaring class
84355 [1.5] Generics bounds overzealous when converting to Object
85477 [1.5] certain unchecked conversion not reported
85303 [1.5] wrong declaring class for invokevirtual call

# Eclipse Platform Build Notes
Java Development Tooling Core

Eclipse SDK 3.1M5 - 15th February 2005 - 3.1 MILESTONE 5
Project org.eclipse.jdt.core v_537 (cvs).

## What's new in this drop

### Problem Reports Fixed

85203 VerifyError running o.e.pdu.ui from workspace
85160 [compiler] java.lang.Object.finalize() method cannot be invoked on an array type
85157 [compiler] Integer[] is not compatible with String[] in conditional expression
85215 [DOM][1.5] Annotation type getModifiers() always returns 0
85115 [1.5] AST annotation.isTopLevel() doesn't work
84724 [5.0][search] fails to find call sites for varargs constructors
85125 When bracket is placed after MethodDeclarator, build fails.

# Eclipse Platform Build Notes
Java Development Tooling Core

Eclipse SDK 3.1M5 - 14th February 2005
Project org.eclipse.jdt.core v_536 (cvs).

## What's new in this drop

### Problem Reports Fixed

78906 [1.5][compiler] this$0 is not allowed as a field in a member class
79396 [compiler] Static receiver for a static method invocation should be generated to cover side-effects
84801 Bad code generated for Java 5.0
83902 [1.5] AbstractMethodError when using covariant returns
83901 [1.5] AbstractMethodError: Compiler fails to catch missing methods of implemented interface
82461 [5.0] Unconventional formatting of annotations in ASTRewrite
81244 error range for generic vararg argument
84743 [1.5][compiler] Cast between two interfaces doesn't need to check compatibility of method return types
84869 Missing constant for "org.eclipse.jdt.core.compiler.problem.autoboxing"
84770 Formatter fails in specific case (.class in code)
84778 NaiveASTFlattener should add spaces around extendedOperands in InfixExpression
84791 [1.5][compiler] eclipse doesn't allow types to be derived from annotation types
83600 [code assist] METHOD_REF proposals have non-standard signatures
80630 [1.5] Conditional expression unboxing should handle this case
84717 Typo in javadoc of Signature.C_GENERIC_END
84528 Not visiting line comments in compilation unit?

# Eclipse Platform Build Notes
Java Development Tooling Core

Eclipse SDK 3.1M5 - 8th February 2005
Project org.eclipse.jdt.core v_535 (cvs).

## What's new in this drop

- Tuned generic method type argument inference (JLS 15.12.2.7&8).
- Optional diagnosis for assignment with no effect now also detects: "var = var++;" scenario.
- Added APIs `IType#getKey()`, `IField#getKey()`, `IMethod#getKey()` that return a binding key for these Java elements.
- Added APIs `IType#isResolved()`, `IField#isResolved()`, `IMethod#isResolved()` that return whether these Java elements are resolved elements and thus whether their key (see above) contains resolved information.
- Added API class `org.eclipse.jdt.core.BindingKey` to decode a binding key obtained from `IBinding#getKey()` or one of the `getKey()` methods above.

### Problem Reports Fixed

84717 Typo in javadoc of Signature.C_GENERIC_START
84669 [5.0] VerifyError: Expecting to find object/array on stack
84593 [1.5][compiler] NPE during problem detection with raw reference to parameterized inner class
84558 Strange error message when using keywords "const" and "goto" as variable names
83648 [1.5] Enum constructor cannot be public or protected
83379 [1.5] compiler does not warn when overriding methods with parameters as array and vararg
84345 [1.5][compiler] Widening reference is possible when boxing in a cast expression
83615 [1.5][compiler] lenient subclass checking with interdependent type variables
84480 Warning for "no effect assignment" j = j++
83500 Can't restore a secondary top level from key
84416 Stepping into message send without receiver should highlight message before sending message
76773 Stepping through conditional looks like it evaluates both halves
84504 [Format] Extra empty line before class in default package when imports are specified
83383 IllegalArgumentException in Signature.getParameterCount
83218 [1.5] Covariant return type & generics
83499 NPE when restoring ITypeBinding from key
83611 compiler reports error but there is no error
84055 [1.5] Unnecessary cast wrongly reported with boxing
83965 [1.5][compiler] Widening conversion is possible when unboxing in a cast expression
81544 [dom] java.util.List<URL> sometimes has a binding, sometimes not
82647 [compiler][1.5] Erroneous error with autoboxing and conditional operand
79696 [dom] Wrong type binding in qualified name
84215 ArrayIndexOutOfBoundsException, internal compiler error
84181 [1.5] ITypeBinding.isFromSource incorrect on raw bindings
83376 [1.5] compiler should error on ambiguous method invocation due to duplicate static imports
78934 [1.5][dom] ParameterizedType for nested generic types has missing bindings
83162 Eclipse reports no name clash with equivalent bridge methods
81332 [1.5][compiler] Is this a name clash?
80626 [1.5] enum types cannot define a compareTo(Object o) method

# Eclipse Platform Build Notes
Java Development Tooling Core

Eclipse SDK 3.1M5 - 1st February 2005
Project org.eclipse.jdt.core v_534 (cvs).

## What's new in this drop

- Add CompletionProposal#getDeclaringKey() and CompletionProposal#getKey() API

### Problem Reports Fixed

84064 AST: Wrong source ranges for superconstructorinv with type args
83939 [1.5][compiler] null is allowed as a legal element value in annotations
83817 IBinding#isEqualTo(..) returns true for methods of different parameterized types
82349 [compiler][1.5] Problems deriving from generic class that uses inner classes
83904 [compiler][1.5] Y<T> should be uniquely defined in the same signature
83646 NPE renaming package
83398 [compiler][1.5] compiler allows adding Object to List
83219 NPE in ProblemReporter with duplicate abstract enum methods
83860 [1.5] java.lang.VerifyError with Enums
83847 [compiler][1.5] can create annonymous class of an enum
83236 ClassCastException using code assist in a javadoc comment
83822 Classes at root of project not found in Open Type dialog
83593 Rename of enum type does not update constructor / throws ClassCastException
83225 [1.5] incorrect(?) compiler errors with type inference
83127 [1.5][javadoc][dom] Wrong / strange bindings for references in javadoc to methods with type variables as parameter types
80257 [1.5][javadoc][dom] Type references in javadocs should have generic binding, not raw
83713 [search] IAE while searching reference to parameterized type
83684 [formatting] Formatting codes like A extends B.C<Object> has no effect.
83599 CU dirty after move refactoring

# Eclipse Platform Build Notes
Java Development Tooling Core

Eclipse SDK 3.1M5 - 25th January 2005
Project org.eclipse.jdt.core v_533 (cvs).

## What's new in this drop

- Search engine is now able to find references and declarations to ITypeParameter.
  To perform this kind of search, clients need to create a pattern using `SearchPattern.createPattern(IJavaElement,int,int)` providing searched ITypeParameter for IJavaElement parameter.
- `TypeParameter#resolveBinding()` now returns an `ITypeBinding` instead of an `IBinding`
- Java model operations have been ported off the deprecated JDOM. They now use AST rewrite. This enables these operations on local and anonymous types, enumerations and annotation types.

### Problem Reports Fixed

83489 [select] Code select returns IType instead of ITypeParameter on method parameters types
83536 "Incompatible argument to function" at vararg function
83300 [1.5] ClassCastException in #getJavaElement() on binding of annotation element
81190 [1.5][search] no search for type parameters - SearchPattern is null
82671 [compiler][1.5]Protected field not visible to subclass in different package when having a class parameter
83210 Unidentical ITypeBindings for same type from same AST from reconcile
80800 getErasure() of ITypeBinding and IMethodBinding don't match the JLS
83304 [1.5][search] Erasure match doesn't work for binary parameterized types
83078 Auto formating multiple classes has errors
25800 Class file editor uses non-standard modifier order
82859 [1.5] void.class is incompatible with Void.TYPE
83297 [1.5] Annotation bindings don't provide their declared elements/methods
43483 [model] Can not add method to local type
77894 [model] Remove dependency to old JDOM in JavaModel implementation
83161 Can't access public field from private subclass
78151 'Insert single proposals automatically' should not insert without prefix
83096 [1.5][compiler] NPE for class with duplicate type parameter
82547 [1.5][compiler] NullPointerException compiling invalid source
83098 IBinding#isEqualTo(..) does not compare occurrence count of local variables

# Eclipse Platform Build Notes
Java Development Tooling Core

Eclipse SDK 3.1M5 - 18th January 2005
Project org.eclipse.jdt.core v_532 (cvs).

## What's new in this drop

- Support for generic methods/constructors search has been added to SearchEngine (see bug 75642).
  User can now search for declaration and/or references to generic methods/constructors or parameterized methods/constructors (like `public <U> void foo(U u){}` or `<String>foo("")` for example). This search can be done either selecting a JavaElement or using Java Search dialog.
- Added new API `JavaConventions#validateTypeVariableName(String)`.
- Added new API `JavaCore#newTypeHierarchy(IRegion,WorkingCopyOwner,IProgressMonitor)` that creates a hierarchy independently of a project.

### Problem Reports Fixed

83032 VerifyError for anonymous declaration using variable arguments
75642 [1.5][search] Methods and constructor search does not work with generics
83013 [5.0] TypeDeclaration after AnnotationTypeDeclaration has wrong source range
82985 Static imports can't resolve bindings
83011 [5.0] TypeName of an Annotation has no binding
79144 [1.5][compiler] generic type checking not performed for method return array types
82844 [1.5] Array type as type variable bound gives internal compiler error
81590 [1.5][compiler] Iteration over nested arrays is broken
82439 [compiler] [1.5] internal compiler reports type mismatch
80945 [1.5] Code assist does not offer static fields and methods from static imports
82590 [compiler] [1.5] internal compiler reports method not implemented
81721 [compiler][1.5] Correct use of generic interfaces give compiler error
82754 [1.5] too many methods allowed by static import
80745 [1.5][compiler] Two interfaces with methods with compatible return types are compatible
80736 [1.5] Compiler doesn't check that bounds have methods with same return type
73535 [1.5][model] Method to validate type parameter names missing in JavaConventions
82740 [assist] NPE inside CompletionEngine with 1.5 code if compliance source level is 1.4
80098 newTypeHierarchy(IRegion,...) should not be constrained to an IJavaProject
82510 [compiler] Util.bind(...) methods should use MessageFormat
81706 [1.5] Static import of static method produces compile error
82670 [5.0] wrong source range for VariableDeclarationFragment with ArrayCreation
80743 [compiler] Interface cannot define a method from Object with a different return type
82616 CharacterLiteral.charValue fails for '\000'
77283 Incremental and full builds produce different problem markers for same duplicate type error
74394 [compiler] Provide XML output option for Eclipse compiler
81719 [compiler][1.5] Correct use of generic abstract classes give compiler error
81945 [compiler] Enum and Duplicate case error
82542 Internal error during AST creation
82558 [select] Text selection fail on constructor when parameters are parameterized types
78232 [1.5][generics]Erroneous warning implementing generic method from interface
82504 [compiler][1.5] ClassCastException when parsing a CastExpression between an array type and a type variable

# Eclipse Platform Build Notes
Java Development Tooling Core

Eclipse SDK 3.1M5 - 11th January 2005
Project org.eclipse.jdt.core v_531 (cvs).

## What's new in this drop

- Added API `ASTParser#createBindings(IJavaElement[],IProgressMonitor)` to create the DOM bindings for the given Java elements.
- Fix for bug 82004 required the index version to be incremented. Indexes will be automatically regenerated upon subsequent search queries (accounting for indexing notification in search progress dialogs).
- Merged problem `IProblem.UnnecessaryArgumentCast` with `IProblem.UnnecessaryCast` since it provided little additional value, and was rather perceived as confusing. From now on, only `IProblem.UnnecessaryCast` is reported.

### Problem Reports Fixed

82514 [1.5][javadoc] Problem with generics in javadoc
82382 IMethodBinding#getJavaElement() for method m(T t) in parameterized type Gen<T> is null
81923 In certain cases generics seens to be applied before autoboxing
82250 [5.0] don't allow duplicate interface bounds
82432 [1.5] VerifyError with Autoboxing
82187 [compiler] [1.5] internal compiler reports bound mismatch
82159 [compiler][1.5] Eclipse vs. javac: Differences when creating generic inner types
81535 [compiler] compliance 1.5 should work with source 1.4 on 1.5 libraries
82137 [select] Code resolve doesn't work on static imports [5.0]
82102 Should not compile related methods with different signatures but same erasures
76761 [model] ImportContainer.hasChildren() should not return true
79334 [classpath] Build path info not updated properly
82217 [compiler][5.0] switch on enum allows non enum constants
73081 Inconsistant type cast warning.
81856 quote problems in property files (JDT)
68823 [dom] Ctrl+C command fails when "assert" is enabled
81824 A generic interface is allowed to be implemented more than once - contrary to Java language specification
81571 Autoboxing ambiguousy
81568 [1.5][compiler] Covariant return types fails when an interface extends another interface
82216 IVariableBinding: Need to know if it is enum constant or normal var
78520 [model] IType#getSuperInterfaceTypeSignatures() doesn't include type arguments
82253 [5.0] Signature#getSimpleName(String) inserts superfluous whitespace characters
78698 [format] Space before ? should default to false
81063 [model] Clarify the problem requestor paramter in becomeWorkingCopy
82004 [model][5.0] 3.1M4 type hierarchy for generic interface
82141 AST: Missing Bindings on annotations
82140 AST: Annotation node not in AST
82136 Interface with own Annotations not accessible when used as a library
81727 [1.5] Redundant warning of parameterized return type
81762 [model] AIOOB in breakpoints view

# Eclipse Platform Build Notes
Java Development Tooling Core

Eclipse SDK 3.1M5 - 4th January 2005
Project org.eclipse.jdt.core v_530 (cvs).

## What's new in this drop

- Added optional compiler diagnosis reporting when boxing/unboxing conversion is performed. Corresponding problem IDs are: `IProblem.BoxingConversion` and `IProblem.UnboxingConversion`.

      * COMPILER / Reporting Boxing/Unboxing Conversion
      *    When enabled, the compiler will issue an error or a warning whenever a boxing or an unboxing
      *    conversion is performed.
      *     - option id:         "org.eclipse.jdt.core.compiler.problem.autoboxing"
      *     - possible values:   { "error", "warning", "ignore" }
      *     - default:           "ignore"

- Renamed unsafe type operation optional problem into unchecked type operation, to better match notion of "unchecked" warning from JLS 3rd edition.

      * COMPILER / Reporting Unchecked Type Operation
      *    When enabled, the compiler will issue an error or a warning whenever an operation involves generic types, and potentially
      *    invalidates type safety since involving raw types (e.g. invoking #foo(X<String>) with arguments  (X)).
      *     - option id:         "org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation"
      *     - possible values:   { "error", "warning", "ignore" }
      *     - default:           "warning"

### Problem Reports Fixed

81556 [search] correct results are missing in java search
81825 [1.5][compiler] Internal compiler error
71195 [model] NullPointerException @ org.eclipse.jdt.internal.core.Buffer.removeBufferChangedListener
79883 [prefs] -pluginCustomization doesn't pick up compiler preferences
81718 [1.5] "Static import never used" warning disappears when variable of same name is declared
81971 [1.5][compiler] compiler allows use of void type as method arguments
82053 generic semantics have some problems
82088 [search][javadoc] Method parameter types references not found in @see/@link tags
79766 [model] NPE in CancelableNameEnvironment
81417 [dom] getJavaElement() throws a NPE for WildcardBinding
81724 [1.5] NullPointerException in FieldBinding.canBeSeenBy when using static import
80223 [search] Declaration search doesn't consider visibility to determine overriding methods
81084 [1.5][search]Rename field fails on field based on parameterized type with member type parameter
80890 [search] Strange search engine behaviour
81376 [search] Clarify effects of R_ERASURE_MATCH for searches other than TYPE
81618 [1.5][compiler] unsafe type operation warning
78122 [compiler] Detect and visually indicate auto-boxing in Jdk1.5 code
78592 [1.5][compiler] missing unchecked cast warning
78591 [1.5][compiler] missing unchecked cast warning

# Eclipse Platform Build Notes
Java Development Tooling Core

Eclipse SDK 3.1M4 - 16th December 2004 - 3.1 MILESTONE 4
Project org.eclipse.jdt.core v_529 (cvs).

## What's new in this drop

### Problem Reports Fixed

81258 IMethodBinding#getJavaElement() is null with inferred method parameterization
80765 [1.5][generics] Invalid class files generated, compiler strange behaviour
81317 ClasspathTests.java and GenericTypeTest.java could not be read (illegal characters)
81262 [Java 5] Verification error when creating anonymous enum subtypes
80964 [1.5] Annotations with RetentionPolicy.RUNTIME are lost after a rebuild
80028 Ambiguous method error where javac succeeds
80739 [1.5] Two methods ends up with the same signatures
81134 [dom] [5.0] NPE when creating AST
81023 [1.5] Wrong position for class instance creation with type parameters
81141 CCE in ProblemBinding when using annotations
80544 [1.5][annot]error on @Override of abstract methods

# Eclipse Platform Build Notes
Java Development Tooling Core

Eclipse SDK 3.1M4 - 14th December 2004
Project org.eclipse.jdt.core v_528 (cvs).

## What's new in this drop

### Problem Reports Fixed

80957 NPE using code assist for unresolved type
80960 [dom] NPE in ASTConverter#convert(...)

# Eclipse Platform Build Notes
Java Development Tooling Core

Eclipse SDK 3.1M4 - 14th December 2004
Project org.eclipse.jdt.core v_527 (cvs).

## What's new in this drop

### Problem Reports Fixed

80918 [1.5][search] ClassCastException when searching for references to binary type
80914 [1.5][search] SearchPattern R_EQUIVALENT_MATCH matchRule does not work properly
80910 [javadoc] Invalid missing reference warning on @see or @link tags

# Eclipse Platform Build Notes
Java Development Tooling Core

Eclipse SDK 3.1M4 - 13th December 2004
Project org.eclipse.jdt.core v_526 (cvs).

## What's new in this drop

- Initial support for search on annotations has been implemented. Declarations or references to annotation types are now found by search engine.
  However, it is not currently able to find annotation member (fields or methods). This should be done for next milestone.
- SearchPattern now accept two new flags for match rule: R_ERASURE_MATCH and R_EQUIVALENT_MATCH (see bug 79790).

      	/**
      	 * Match rule: The search pattern matches search results as raw types or parameterized types with same erasure.
      	 * Example:
      	 *	- pattern: List<Exception>
      	 *	- match: List<Object>
      	 * Can be combined to all other match rules, e.g. {@link #R_CASE_SENSITIVE} | {@link #R_ERASURE_MATCH}
      	 * This rule is not activated by default, so raw types or parameterized types with same erasure will not be found
      	 * for pattern List<String>,
      	 * Note that with this pattern, the match selection will be only on the erasure even for parameterized types.
      	 * @since 3.1
      	 */
      	public static final int R_ERASURE_MATCH = 16;
      	/**
      	 * Match rule: The search pattern matches search results as raw types or parameterized types with equivalent type parameters.
      	 * Example:
      	 *	- pattern: List<Exception>
      	 *	- match:
      	 * 		+ List<? extends Throwable>
      	 * 		+ List<? super RuntimeException>
      	 * 		+ List<?>
      	 * Can be combined to all other match rules, e.g. {@link #R_CASE_SENSITIVE} | {@link #R_EQUIVALENT_MATCH}
      	 * This rule is not activated by default, so raw types or equivalent parameterized types will not be found
      	 * for pattern List<String>,
      	 * This mode is overridden by {@link  #R_ERASURE_MATCH} as erasure matches obviously include equivalent ones.
      	 * That means that pattern with rule set to {@link #R_EQUIVALENT_MATCH} | {@link  #R_ERASURE_MATCH}
      	 * will return same results than rule only set with {@link  #R_ERASURE_MATCH}.
      	 * @since 3.1
      	 */
      	public static final int R_EQUIVALENT_MATCH = 32;

  Added new API method to make this flag settable even while creating pattern using a IJavaElement:
  - `SearchPattern#createPattern(IJavaElement element, int limitTo, int matchRule)`
- SearchMatch now has a rule field which shows the rule used while reporting the match (initial implementation for bug 79866).
  Added new API methods to access this field:
  - `SearchMatch#getRule()`
  - `SearchMatch#setRule(int)`
- Added API IType#getFullyQualifiedParameterizedName() that shows the type parameter/arguments if the type is generic/parameterized.
- Added support in Java model for annotation types and annotations.
- Support for indexing annotation types required the index version to be incremented. Indexes will be automatically regenerated upon subsequent search queries (accounting for indexing notification in search progress dialogs).
- Added compiler support for autoboxing
- Code Assist now works for annotations. When performing a completion inside an annotation name, proposals are possibles types and annotations types are more relevant than other types
- Code Select now works for annotations and annotation methods in correct code.
- Recovery now works for annotation type declaration and annotation method declaration

### Problem Reports Fixed

80338 getReturnType() throws a NullArgumentException
80788 Interface and annotation member types are implicitiely static
80780 IncompatibleClassChangeError for Annotations
80714 Strange syntax diagnosis with incorrect annotations
80699 Code Select does not work for annotations inside class file
79790 [1.5][search] Need to distinguish between raw and restricted search in the case of instantiated types
80672 [1.5] Annotation change does not trigger recompilation
80466 ITypeBinding#getJavaElement() is null for declaration of java.util.List<E>
80083 VerifyError on String-Operator += when using generics
77430 [1.5] case statements with enum values not correctly supported
80597 [compiler] NPE while reporting array empty dimensions problem
80126 [assist] CompletionRequestor.setIgnored should allow POTENTIAL_METHOD_DECLARATION
80602 Javadoc of ASTNode#getStartPosition() contains dangling reference to ASTParser
80455 [5.0] ITypeBinding.canAssign not aware of type boxing
80579 NPE is ITypeBinding.isCastCompatible
80328 [annotation] annotation problem type should implements java,lang.annotation.Annotation
79953 AST Creation Error while editing Java file
78849 [1.5][compiler] Java 1.5 Boxing and Character?
79641 boolean autoboxing does not work with Object varargs
80384 Cannot decode package signature from CompletionProposal
79254 autoboxing does not work in combination with downcasting
80045 NPE in MethodBinding.signature
80378 Javadoc of CompletionProposal#getFlags() needs polish
80208 [1.5][compiler] NPE trying to resolve single static import
79803 [1.5][search] Search for references to type A reports match for type variable A
79860 [1.5][search] Search doesn't find type reference in type parameter bound

# Eclipse Platform Build Notes
Java Development Tooling Core

Eclipse SDK 3.1M4 - 7th December 2004
Project org.eclipse.jdt.core v_525 (cvs).

## What's new in this drop

- Compiler now checks annotation location according to @Target meta-annotation
- Compiler now checks method overriding according to @Override annotation

### Problem Reports Fixed

79891 [GENERICS] Array of Inner Class creation works on eclipse, but fails to compile with sun jdk
79809 [1.5][dom][javadoc] Need better support for type parameter Javadoc tags
79904 [1.5][dom][javadoc] TagElement range not complete for type parameter tags
80144 [1.5] Mutually-recursive type bounds interfere with inheritance of generic type
76751 [1.5][annot] Can't use annotation classes as argument to generic methods
80014 @Retention(RetentionPolicy.RUNTIME) is ignored for annotations
80114 [1.5][Regression] Annotation type cannot have constructors
80021 [1.5] CCE in VariableBinding.getJavaElement()
80041 IVariableBinding#isEqualTo(..) doesn't tell parameters from different methods apart
77463 [1.5][annot] Wrong error marker text for type annotation
79967 NPE in WildcardBinding.signature with Mark Occurrences in Collections.class
79974 [1.5] Wrong javadoc for TypeDeclarationStatement
79795 Code formatter doesn't handle enums well.
79673 [1.5] Wrong method binding
79797 [1.5] Inconsistent classfile - moving code around
79847 [1.5][annot] Array type cannot have two or more dimensions
79844 [1.5][annot] when int value can be contained in a short, the cast is not required
79848 [1.5][annot] Array of java.lang.Class is a legal value for the type of an annotation type member declaration
79779 Code Formatter fails with static imports
79668 [1.5][annot] implicit wrapping in array type
78915 [1.5][compiler] enum cannot be explicitly abstract
78916 [1.5][compiler] abstract methods in an enum declaration must be implemented for each constant
79690 Find declaring node doesn't work for type variables
79775 [dom]ClassCastException inside ASTConverter when opening a java file
79752 Need access to type binding of anonymous enumerations
79772 Internal compiler error with I20041123/24/30
79136 API clarification for *Binding#getErasure(): why not a "general back-link"?
76318 [tests] Cannot run ASTModelBridgeTests if workspace path segment count is 1
78914 [1.5][compiler] super() cannot be called in the constructor of an enum declaration

# Eclipse Platform Build Notes
Java Development Tooling Core

Eclipse SDK 3.1M4 - 30th November 2004
Project org.eclipse.jdt.core v_524 (cvs).

## What's new in this drop

- Support for generic types search has been added to SearchEngine (see bug 75641).
  User can now search for declaration and/or references to generic types or parameterized types (like `public class List<T> {}` or `List<String>` for example). This search can of course be done either selecting a JavaElement (see following point) or using Java Search dialog.
- Support for generic types and generic methods selection has been added inside CodeSelect. When the result is a parameterized type reference, the returned JavaElement is a `ParameterizedSourceType` or `ParameterizedBinaryType`. When the result is a parameterized method invocation, the returned JavaElement is a `ParameterizedSourceMethod` or `ParameterizedBinaryMethod`. When the result is a field access to a generic type's field, the returned JavaElement is a `ParameterizedSourceField` or `ParameterizedBinaryField`.
- The internal Java model cache now adapts to the number of elements in the workspace. For example if a project has 1000 package fragment roots, the space limit of the cache of roots will increase to 1000. This size is reset to its default when the project is closed.
- Added the following compatibility rules APIs:
  - `ITypeBinding#isAssignmentCompatible(ITypeBinding)`
  - `ITypeBinding#isCastCompatible(ITypeBinding)`
  - `ITypeBinding#isSubTypeCompatible(ITypeBinding)`
  - `IMethodBinding#overrides(IMethodBinding)`

### Problem Reports Fixed

79349 [1.5] Annotation with default value
79756 Erroneous compile error "The local variable may not have been initialized"
79635 NPE when asking an IMethodBinding whether it overrides itself
79667 [1.5][annot] value in member pair value must be a constant expression
79666 [1.5][annot] Default value of annotation type member declaration must be assignment compatible with return type
79663 [1.5][annot] Modifiers for field declaration must be public in an annotation type declaration
79665 [1.5][annot] Field declarations inside annotation type declaration must be constant
79512 [1.5] Extract Method must not generate return type with type variable [refactoring][1.5]
79609 ITypeBinding#isEqualTo(..) thinks independent method type parameters are equal
79610 IVariableBinding#getJavaElement() returns null for local variables
75641 [1.5][search] Types search does not work with generics
79612 ClassCastException on referenceTypeBinding.isEqualTo(primitiveTypeBinding)
79545 Eclipse vs Sun JDK: different class files from the same source code
78293 [1.5][compiler] Should flag implementing twice generic interface with different arguments
79544 ITypeBinding#isEqualTo(..) does not compare type arguments
79570 [1.5][DOM] v4 type binding should not be parameterized
78087 [dom] TypeBinding#getJavaElement() throws IllegalArgumentException for parameterized or raw reference to binary type
78183 TypeBinding#getQualifiedName() does not honor Javadocs
79109 [1.5][DOM] AnnotationTypeMemberDeclaration.resolveBinding() might return a IMethodBinding
79395 IllegalArgumentException in CompilationUnitResolver.parse (line 323)
77283 Incremental and full builds produce different problem markers for same duplicate type error
79263 ClassCastException in SourceElementParser
79460 IMethodBinding of non-generic method says isRawMethod()==true
79390 [1.5][compiler] ClassCastException creating a generic local class
77806 [1.5][dom] SimpleType AST node of List in List<String> has no type binding
79362 IllegalArgumentException during "Java AST creation"
75785 Missing binding on non-visible type
79163 [compiler] Dependency on indirectly referenced types not correctly computed
77272 [builder] Delta compilation fails to notice errors when removing an interface
79271 ITypeBinding#isEqualTo(..) returns true when comparing ArrayList<Integer> to its erasure
77388 [compiler] Reference to constructor includes space after closing parenthesis
78931 [select] cannot select qualified type name without the qualified package name
79267 [search] Refactoring of static generic member fails partially
72258 [model] Should be able to dynamicaly set the size of Java model cache

# Eclipse Platform Build Notes
Java Development Tooling Core

Eclipse SDK 3.1M4 - 23rd November 2004
Project org.eclipse.jdt.core v_523 (cvs).

## What's new in this drop

- Compiler is now able to parse 1.5 syntax in Javadoc comments (see bugs 70891 and 70892).
  Note: these changes only apply to @param and {@value} tags.
- Batch AST creation API was finalized. See `ASTParser#createASTs(ICompilationUnit[],String[],ASTRequestor,IProgressMonitor)` and `ASTRequestor`.

### Problem Reports Fixed

79110 [1.5] Missing attribute for local and anonymous classes
78057 [dom] Can IBinding#getKey() return null?
78757 MethodBinding.getJavaElement() returns null
78930 ITypeBinding#getJavaElement() throws NPE for type variable
73675 [dom] Need AST creation pipeline
73971 [1.5] Ambiguous method error with overloaded parameterized methods
78581 [search] NPE while searching
79108 [1.5][DOM] enumConstantDeclaration.resolveBinding() always returns null
77645 [1.5][dom] navigate from local var binding to declaring method binding
79098 [dom] [1.5] EnhancedForStatement#resolveBinding() is superfluous
77562 [1.5] overriding methods with more specific generic return types causes compile errors
79091 [compiler] Should report invalid type only on the name
77093 [search] No references found to method with member type argument
77184 [1.5][select] Code select does not select enum declarations
78801 [assist] NPE attempting to code assist for parameters
78128 Error deleting project with jar file referenced by other project
78275 [recovery] NPE in GoToNextPreviousMemberAction with syntax error
70891 [1.5][javadoc] Compiler should accept new 1.5 syntax for @param
78858 [1.5] Internal compiler error: java.lang.NullPointerException at ParameterizedTypeBinding.getMethods
78905 [1.5][compiler] Wrong hex decimal floating point literal is not rejected
77630 [compiler] no error when importing package inside static import
78075 normal and static import of the same class doesn't work correctly
78056 [1.5] static import of a static member of a non static member type must be allowed
77955 [1.5] member classes of super class are not allowed inside static import
78082 [1.5][search] FieldReferenceMatch in static import should not include qualifier
78714 "Convert local to field" should know about prefixes
75814 Inconsistent results when adding a breakpoint to class file with src attached
78190 [dom] Add ast creation performance tests
78189 [model] Add hierarchy performance tests
78188 [search] Add search performance test
78740 IDOMType.getFlags() fails to represent interface flags correctly.
78735 IBinding#isEqualTo(..) fails with a field that hides another
78232 [1.5][generics]Erroneous warning implementing generic method from interface
78140 [1.5][compiler] Unchecked conversion warning when overriding a generic method
77861 [1.5] Illegal class file generated with duplicate methods
77785 [1.5][compiler] Generics: missing name clash error
77496 [1.5] compiler doesn't detect illegal method overriding due to non-matching return type parameters
74936 [1.5] Compiler does not warn for missing implementation of Map.putAll abstract method
74594 [1.5] ClassFormat error when running this example

# Eclipse Platform Build Notes
Java Development Tooling Core

Eclipse SDK 3.1M4 - 16th November 2004
Project org.eclipse.jdt.core v_522 (cvs).

## What's new in this drop

- In 1.5 compliant mode, T[].clone() invocations are considered to be of type T[], as opposed to Object previously.
- New ComletionProposal kind `METHOD_NAME_REFERENCE`. This completion is a reference to a method name.
  This kind of completion might occur in a context like `"import java.lang.Math.co^"` and complete it to `"import java.lang.Math.cos;"`.

### Problem Reports Fixed

77808 [1.5][dom] type bindings for raw List and List<E> have same key
78704 [1.5][compiler]Internal compiler error in org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding
78663 [1.5][compiler] Generics, assign error with equal types
78649 [1.5] ITypeBinding.isUpperBound wrong
77398 [1.5] Organize imports does not honor enum types [code manipulation]
78464 [1.5][compiler] bad args_size attribute value for Enum constructor
78104 [1.5][compiler] java.lang.Object.clone() implicitely needs an implicit cast to receiver type
78321 Problem with Enum.values in static initializer.
78310 [dom] [1.5] improve tests for IBindings
78015 [1.5][compiler] AbstractMethodError
78266 [dom] [1.5] API of ITypeBinding: no isGenericType() query
64310 [1.5][model] Signature implementation does not fully support generic parameterized type names
77968 [compiler] ArrayIndexOutOfBoundsException from parser when using Java editor
77573 [1.5][assist] Code assist does not propose static fields
78008 [1.5][compiler] java.lang.VerifyError on shortcut if-else
78018 [1.5][javadoc] Missing Javadoc comments Problem for enums
73784 [search] java search internal error
77644 [dom] AST node extended positions may be wrong while moving
78160 Invalid classfile for problem type

# Eclipse Platform Build Notes
Java Development Tooling Core

Eclipse SDK 3.1M4 - 9th November 2004
Project org.eclipse.jdt.core v_521 (cvs).

## What's new in this drop

- `ICompletionRequestor` was deprecated. Use `CompletionRequestor` instead.

### Problem Reports Fixed

77359 [1.5][dom] Pull up of type declaration facilities
76132 [1.5][wildcards] Bound mismatch incorrectly diagnosed with type variable quantification
78139 [1.5][compiler] spurious type mismatch problems with generics.
77602 [javadoc] "Only consider members as visible as" is does not work for syntax error
77510 [javadoc] compiler wrongly report deprecation when option "process javadoc comments" is not set
78027 [1.5] Generics, bound mismatch
78089 [1.5] [compiler] Annotations are not accepted inside interfaces
74119 [1.5] Unexpected compile error with bound types with Eclipse 3.1M1.
78049 [1.5][compiler] Missed error for generic array creation.
73970 [1.5][dom] overloaded parameterized methods have same method binding key
77422 [1.5][compiler] ArrayIndexOutOfBoundsException with vararg constructor of generic superclass

# Eclipse Platform Build Notes
Java Development Tooling Core

Eclipse SDK 3.1M3 - 4th November 2004 - 3.1 MILESTONE 3
Project org.eclipse.jdt.core v_520 (cvs).

## What's new in this drop

### Problem Reports Fixed

77244 [1.5][enum] final enum class crashes the compiler

# Eclipse Platform Build Notes
Java Development Tooling Core

Eclipse SDK 3.1M3 - 4th November 2004
Project org.eclipse.jdt.core v_519 (cvs).

## What's new in this drop

### Problem Reports Fixed

76780 [model] return type not recognized correctly on some generic methods
77772 [1.5] some enums failing to parse; internal error dialog pops up while typin
77538 [dom] AST rewrite fails to generate the modified code

# Eclipse Platform Build Notes
Java Development Tooling Core

Eclipse SDK 3.1M3 - 2nd November 2004
Project org.eclipse.jdt.core v_518 (cvs).

## What's new in this drop

- Added API that allows to batch the creation of DOM ASTs: `ASTParser#createASTs(ICompilationUnit[] compilationUnits, String[] bindingKeys, ASTRequestor requestor, IProgressMonitor monitor)`. Note this API is still under development and subject to change without notice.

### Problem Reports Fixed

70056 [1.5] Please support varargs
77327 [1.5] Contravariance of generic Type raises Error
71612 [1.5] ClassFormatError when running simple example
76434 [1.5] Generics, assign error despite equal types
76720 [1.5] Implementing generic bounded subinterface causes Bound mismatch error
76219 [1.5][wildcards] Not-necessarily-unbounded wildcards in method formal parameter types
76601 [1.5] parameterized types: eclipse incorrectly reports errors

# Eclipse Platform Build Notes
Java Development Tooling Core

Eclipse SDK 3.1M3 - 2nd November 2004
Project org.eclipse.jdt.core v_517 (cvs).

## What's new in this drop

- Search engine is now able to find declarations and references to varargs methods. This required the index version to be incremented. Indexes will be automatically regenerated upon subsequent search queries (accounting for indexing notification in search progress dialogs).
- Default severity for access restriction violations got raised to "warning".

      * COMPILER / Reporting Forbidden Reference to Type with Restricted Access
      *    When enabled, the compiler will issue an error or a warning when referring to a type with restricted access, as defined according
      *    to the access restriction specifications.
      *     - option id:         "org.eclipse.jdt.core.compiler.problem.forbiddenReference"
      *     - possible values:   { "error", "warning", "ignore" }
      *     - default:           "warning"

### Problem Reports Fixed

77273 [model] ArrayIndexOutOfBoundsException when creating type hierarchy with duplicate types
76359 [1.5] Unsafe operation not reported while using member type
77235 ArrayIndexOutOfBounds in Parser in reconciler
68710 Open Declaration opens wrong target
77249 Annotation on class cancels "public" modifier
77212 [1.5][enum] declared enum type .valueOf(String) throws ArrayIndexOutOfBoundsException
75400 [1.5] Wrong type mismatch error reported
75156 [1.5] wrong diagnosis for method override
70695 [1.5] warning for easily detectible incorrect bounds
72643 [1.5] parser doesn't recognize when generic methods aren't used
77051 [1.5] Type mismatch involving super
77175 [1.5] DefaultBindingResolver#resolveType(EnumDeclaration) always returns null
75328 [1.5][wildcards] Bound Mismatch for ? type
72886 [search] references to endVisit(MethodInvocation) reports refs to endVisit(SuperMethodInvocation)
75329 [classpath] Restrict visibility of Java Project content
74285 Code assist doesn't suggest parameter names for methods of generic types
74588 [1.5] missing enclosing instance is wrongly reported when accessing an enclosing instance variable.
76313 [1.5] Error while using parametrized static factory
77151 [1.5] Enum constant cannot be qualified when used as a case label
77118 [1.5] Covariance: cannot override method returning Object with method returning an interface
77052 [1.5] Type mismatch on embedded type parameters
76620 Selection bug (Open Declaration)
76874 [1.5] Out of memory reconciling some invalid enum source
76682 Certain code prevents saving and copy operations
74669 [1.5] NullPointerException during save and compile
74032 [1.5] Generics: bad method referenced when a type variable extends two types

# Eclipse Platform Build Notes
Java Development Tooling Core

Eclipse SDK 3.1M3 - 26th October 2004
Project org.eclipse.jdt.core v_516 (cvs).

## What's new in this drop

- Support for search on enum has been implemented. Declarations or references to enum type, fields, constructors and methods are correctly found by search engine.
- Support to compute type hierarchies on enum required the index version to be incremented. Indexes will be automatically regenerated upon subsequent search queries (accounting for indexing notification in search progress dialogs).
- Added support inside CompletionEngine to not propose completion when an access restriction is violated. Currently access restrictions are applied only to top level types.
- Added code assist option to not propose completion when an access restriction is violated.

      	 * CODEASSIST / Activate Access Restrictions Sensitive Completion
      	 *    When active, completion doesn't show that is access restricted.
      	 *     - option id:         "org.eclipse.jdt.core.codeComplete.restrictionsCheck"
      	 *     - possible values:   { "enabled", "disabled" }
      	 *     - default:           "disabled"

- Added first-cut of enumeration support into compiler. Requires some more work to properly diagnose error situations, and be leveraged in various JDT/Core functionalities.
- Improved problem descriptions to show ellipsis in varargs method signatures
- Added `org.eclipse.jdt.core.util.ClassFileBytesDisassembler#SYSTEM` field to support an extra-detailed output from the disassembler. It can show constant pool contents.
- In order to fix bug 76440, two APIs on `org.eclipse.jdt.core.Signature` have been added to handle var args in the signature decoding.
  - `Signature#toCharArray(char[],char[],char[][],boolean,boolean,boolean)`
  - `Signature#toString(String,String,String[],boolean,boolean,boolean)`
- Added compiler option to diagnose need for cast of varargs argument. Matching problem IDs are `IProblem.MethodVarargsArgumentNeedCast` & `IProblem.ConstructorVarargsArgumentNeedCast`

      * COMPILER / Reporting Varargs Argument Needing a Cast in Method/Constructor Invocation
      *    When enabled, the compiler will issue an error or a warning whenever a varargs arguments should be cast
      *    when passed to a method/constructor invocation. (e.g. Class.getMethod(String name, Class ... args )
      *    invoked with arguments ("foo", null)).
      *     - option id:         "org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast"
      *     - possible values:   { "error", "warning", "ignore" }
      *     - default:           "warning"

### Problem Reports Fixed

74851 [1.5] enum errors in 3.1M1
75134 [1.5] Type mismatch error generated
76880 Unable to resolve enum type
76766 [1.5] Option to format empty enum declaration or empty enum constant body has no effect
76642 Inner Enum Declarations not formatted
76093 Varargs support should define a subtype of ArrayTypeReference
76472 Duplicate entries in the constant pool for some methods
76440 [1.5] Disassembler doesn't render 1.5 constructs correctly
76524 need a isVarargs() method on IMethodBinding

# Eclipse Platform Build Notes
Java Development Tooling Core

Eclipse SDK 3.1M3 - 19th October 2004
Project org.eclipse.jdt.core v_515 (cvs).

## What's new in this drop

- Code assist use static imports to propose completions.
- 2 new Javadoc compiler options have been added (see bugs 53977 and 75701).
  While reporting problems on invalid Javadoc tags, user can now decide not to report deprecation and/or visibility warnings on references used in @see, @link or @values tags.
  Here's the description of these new options:

      	 * COMPILER / Reporting Invalid Javadoc Tags with Deprecated References
      	 *    Specify whether the compiler will report deprecated references used in Javadoc tags.
      	 *    Note that this diagnosis can be enabled based on the visibility of the construct associated with the Javadoc;
      	 *    also see the setting "org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility".
      	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef"
      	 *     - possible values:   { "enabled", "disabled" }
      	 *     - default:           "enabled"
      	 *
      	 * COMPILER / Reporting Invalid Javadoc Tags with Not Visible References
      	 *    Specify whether the compiler will report non-visible references used in Javadoc tags.
      	 *    Note that this diagnosis can be enabled based on the visibility of the construct associated with the Javadoc;
      	 *    also see the setting "org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility".
      	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef"
      	 *     - possible values:   { "enabled", "disabled" }
      	 *     - default:           "enabled"
      	 *

- Changed build state format to record access restrictions. As a consequence, a full rebuild will be required when reusing existing workspaces.
- Added tracing (org.eclipse.jdt.core/debug/resolution) to show the number of packages, roots and working copies used during name resolution.
- New API `org.eclipse.jdt.core.dom.EnumDeclaration#enumConstants()`. The enum constants are now in a separate list from the body declarations. The `org.eclipse.jdt.core.dom.EnumDeclaration#getEnumConstants()` method has been deprecated and will be removed after M3. See bug 76190 for further details.
- New requestor API `CompletionRequestor` is implemented inside code assist engine.
- Added missing API to `IType` for new completion requestor support:
  - `IType#codeComplete(char[],int,int,char[][],char[][],int[],boolean,CompletionRequestor,WorkingCopyOwner)`
  - `IType#codeComplete(char[],int,int,char[][],char[][],int[],boolean,CompletionRequestor)`
- Added missing API to `IEvaluationContext` for new completion requestor support:
  - `IEvaluationContext#codeComplete(String,int,CompletionRequestor, WorkingCopyOwner)`
  - `IEvaluationContext#codeComplete(String,int,CompletionRequestor)`
- Added new API inside `Signature` to extract package name part or type name part of a type signature:
  - `Signature#getSignatureQualifier(char[])`
  - `Signature#getSignatureQualifier(String)`
  - `Signature#getSignatureSimpleName(char[])`
  - `Signature#getSignatureSimpleName(String)`
- Added support in Java model for varargs methods:
  - `Flags.isVarargs(method.getFlags())` now returns whether the method is a varargs method.
  - Operations that resolve (like reconcile, search, etc.) now convert varargs source methods into varargs MethodDeclarations.
- Introduced access restrictions so as to better enforce API contracts across components.

  Problem: Libraries are usually packaged to contain both API for compile-time and implementation for runtime; and thus expose a superset of the API contract to client programs, allowing them to make forbidden assumptions on internals (a typical restriction for Eclipse developpers is to not use internal classes from prerequisite plug-ins). One solution for solving this issue is to separate the API from its implementation into 2 distinct libraries (compile-time/runtime) and then use the classpath rules to only include the API portion on the classpath for compiling. However, this usually proves to be unrealistic, since the API is often mixed with some implementation aspects (not officially part of the API) which are carrying references to its internals (supertype hierarchy, field or method signatures). When it happens, then the compiler needs the implementation also to be on the classpath in order to resolve all signatures appropriately; which goes back to the original problem of exposing too much to unaware clients.

  Instead, we allowed classpath rules to be associated with some import restrictions so as to select portions of prerequisite projects or libraries which are legal to use inside this project. Access restrictions are expressed as inclusion/exclusion rules on classpath entries (using Ant fileset notation for discriminating on package and/or file names, e.g. `excluding='**/internal/'` would exclude all types defined any `internal` package), and can be associated to project, library, classpath variable or classpath container classpath entries. Note that restrictions are automatically combined along a classpath chain. For instance, if a classpath container entry is associated with some restrictions, then when resolved to a set of entries, these will automatically inherit the container restrictions (and could still provide further custom restrictions on a per entry basis).

  When a forbidden reference to a restricted type is detected, the compiler will issue a problem which severity can be controlled by JavaCore preference "org.eclipse.jdt.core.compiler.problem.forbiddenReference". Corresponding problem marker ID is `IProblem.ForbiddenReference`.

      * COMPILER / Reporting Forbidden Reference to Type with Restricted Access
      *    When enabled, the compiler will issue an error or a warning when referring to a type with restricted access, as defined according
      *    to the access restriction specifications.
      *     - option id:         "org.eclipse.jdt.core.compiler.problem.forbiddenReference"
      *     - possible values:   { "error", "warning", "ignore" }
      *     - default:           "ignore"

  In order to challenge this new functionality before leveraged in UI or PDE, Eclipse developpers need to perform the following two actions:

  1. edit some .classpath file to exclude all types located in "**/internal/" packages from prerequisites; i.e. replace line

         	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>

     with

         	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins" excluding="**/internal/"/>

  2. enable compiler warning for forbidden references, i.e. add the following line to the workspace default preferences located in: `<workspace>\.metadata\.plugins\org.eclipse.core.runtime\.settings\org.eclipse.jdt.core.prefs`

         	org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning

     Note: alternatively, it could be specified on a per project basis, by adding line to `<project>/.settings/org.eclipse.jdt.core.prefs`.
- Static imports are now supported:

      import static type.*;
      import static type.identifier;

  Java Search is also able to find referenced type, field and/or member in static imports but required the index version to be incremented.
  Indexes will be automatically regenerated upon subsequent search queries (accounting for indexing notification in search progress dialogs).

### Problem Reports Fixed

76324 [Javadoc] Wrongly reports invalid link format in @see and @link
74369 [Javadoc] incorrect javadoc in local class
75701 [Javadoc] References in Javadoc to deprecated members
53977 [DCR] [Javadoc] Add a Javadoc option not to report errors on non-visible references
76360 [1.5] NPE when using static import
76174 [1.5] missing error when using static import
76159 Missing type in hierarchy
76328 Using latest, NPE in codeassist
66296 Slow closing editor after startup
76277 IllegalArgumentException: Invalid string literal : >("i" + "ib2")<
76190 DCR AST: EnumDeclaration: Separate field and body statement lists
76244 [1.5] No error on invalid static import declaration
76181 Formatter fails on EnumDeclaration
74776 [Search] Wrong search results for almost identical method
29865 Source visibility in project dependency
76181 Formatter fails on EnumDeclaration
76100 AST: Javadoc node not available on AnnotationTypeDeclaration
76103 [1.5] Inner AnnotationTypeDeclaration not parsed
76027 Optimization of code assist in debugger
75090 source positions calculated wrongly

# Eclipse Platform Build Notes
Java Development Tooling Core

Eclipse SDK 3.1M3 - 12th October 2004
Project org.eclipse.jdt.core v_514 (cvs).

## What's new in this drop

- Type search works with generic (only for string pattern, see bug 75641).
  For example, user can enter `List<String>` in Java Search text and search for type references.
  Match(es) will be found if this parameterized type is used in the search scope.
  Note that some API changes still need to be done to make generic type search work while selecting a parameterized type from Java editor.
- Field search works with generic (see bug 73277).
  For example, user can search for references to a field declared as

      List<String> ls;

  Match(es) will be found if this field is used in the search scope.

### Problem Reports Fixed

75649 [1.5] completion inside a wildcard does not work
52379 JavaElement.getElementInfo no longer works
74753 [1.5] codeassist failing on type parameter
73277 [1.5][Search] Fields search does not work with generics
73671 [1.5] Signature.getTypeArguments should also tolerate normal types
73078 ISourceManipulation.delete() tries to run in WorkspaceRoot scheduling rule
75561 Rename package results in I/O exception
75644 Array index out of bounds doing code assist
74286 IllegalArgumentException during codeselect
75720 [1.5] Formatter cannot format code that contains varargs
75112 [Search] Cannot find reference to a member type
75632 Infinite loop in DefaultCommentMapper#storeLeadingComments
75658 [1.5] SourceElementParser do not compute correctly bounds of type parameter
75488 Incorrect code formatting
70602 Why is equals(..) method of IBindings not implemented?

# Eclipse Platform Build Notes
Java Development Tooling Core

Eclipse SDK 3.1M3 - 5th October 2004
Project org.eclipse.jdt.core v_513 (cvs).

## What's new in this drop

- The batch compiler now support 5 as a valid version number for -target and -source options. 5 is equivalent to 1.5.
- Added support for static imports. Can now import all static members of a type, such as `java.lang.Math`.
- Added new API `IBinding#getJavaElement()` to get the Java element corresponding to a `org.eclipse.jdt.core.dom.IBinding`.

### Problem Reports Fixed

75466 [1.5] IAE in JavaElement.exists() for Collection<E>#containsAll(Collection<?>)
75455 [1.5] IAE on Content Assist for variable of type List<? extends Number>
75489 Batch compiler should support -target 5 or -source 5
73963 [1.5] Wrong errors in widening reference conversion to parameterized class type
75221 Failure in test for build I200409281200
74126 Compiler should support new hexadecimal floating-point literals

# Eclipse Platform Build Notes
Java Development Tooling Core

Eclipse SDK 3.1M3 - 28th September 2004
Project org.eclipse.jdt.core v_512 (cvs).

## What's new in this drop

### Problem Reports Fixed

74761 [1.5] Invalid compiler binding for qualified raw type reference
68927 'non-static access to static member' problem not reported for super field access
74938 Syntax error for annotation in 1.4 has unknown source range

# Eclipse Platform Build Notes
Java Development Tooling Core

Eclipse SDK 3.1M2 - 24th September 2004 - 3.1 MILESTONE 2
Project org.eclipse.jdt.core v_511 (cvs).

## What's new in this drop

### Problem Reports Fixed

74934 ArrayIndexOutOfBoundsException with float literal

# Eclipse Platform Build Notes
Java Development Tooling Core

Eclipse SDK 3.1M2 - 23rd September 2004
Project org.eclipse.jdt.core v_510 (cvs).

## What's new in this drop

- Support for hexadecimal floating-point literals has been added. This is available in 1.5 mode only.

### Problem Reports Fixed

72583 [1.5] NPE in Scope.minimalErasedCandidate
74096 [1.5] visibility check ignores type bounds?
74592 [1.5] Invalid cycle diagnosis
74420 [1.5] Unexpected "Illegal forward reference to type parameter T"
74519 Can declare @interface in 1.4
74544 [1.5] Invalid compiler binding for parameterized qualified type reference
74514 NPE in AST creation
74014 prefix path for source attachements - automatic detection does not seem to work

# Eclipse Platform Build Notes
Java Development Tooling Core

Eclipse SDK 3.1M2 - 21st September 2004
Project org.eclipse.jdt.core v_509 (cvs).

## What's new in this drop

### Problem Reports Fixed

74355 -source 1.4 and -1.5 leads to an error
74320 [1.5] Unused private member diagnosis fooled by generics
74289 AIOOB Exception in WeakHashSet.cleanupGarbageCollectedValues

# Eclipse Platform Build Notes
Java Development Tooling Core

Eclipse SDK 3.1M2 - 20th September 2004
Project org.eclipse.jdt.core v_508 (cvs).

## What's new in this drop

### Problem Reports Fixed

73740 Diagnosis for serialization should not render j2me development impossible
74244 [1.5] boolean.class == Boolean.TYPE should be true
73995 [Javadoc] Wrong warning for missing return type description for @return {@inheritDoc}
72644 [1.5] Problems with generic maps
73356 Index not updated after adding a source folder
73961 IPackageBinding#getName() should return "" for default package
73933 Clarifications of the DOM/AST API for VariableDeclarationExpression and VariableDeclarationStatement
73891 Should not use String#intern()
73837 Java 1.5 generics problem (Eclipse 3.1M1)
73336 [1.5][search] Search Engine does not find type references of actual generic type parameters
73762 Line ends not reset when setting a different source
73884 [1.5] Unexpected error for class implementing generic interface
73896 StackOverflowError resolving bindings of java.util.Collections
73678 [1.5] NPE when saving an editor which contains genric type

# Eclipse Platform Build Notes
Java Development Tooling Core

Eclipse SDK 3.1M2 - 14th September 2004
Project org.eclipse.jdt.core v_507 (cvs).

## What's new in this drop

### Problem Reports Fixed

72683 Slow code assist in Display view
73696 searching only works for IJavaSearchConstants.TYPE, but not CLASS or INTERFACE
73479 [Javadoc] Improve error message for invalid link in @see tags
73551 [Search] NPE while searching package declaration
73112 [Search] SearchEngine doesn't find all fields multiple field declarations
71267 [Search][Javadoc] SearchMatch in class javadoc reported with element of type IImportDeclaration
73348 [Javadoc] Missing description for return tag is not always warned
73573 [1.5] - CodeAssist - ArrayIndexOutOfBoundsException with genric type completion
67976 Exceptions in log when Opening type while checking out
72684 MemberElementInfo#name should be removed
73530 [1.5] VerifyError using generics and direct array access
73286 NPE on save
73497 Problem methods don't point to the right position in source
73561 AST: Enum constant source range too small
71279 [Search] NPE in TypeReferenceLocator when moving CU with unresolved type reference
67981 Add Java Exception Breakpoint is broken
72859 NPE in ASTConverter
72214 [Prefs] IllegalStateException when importing preferences
62472 [1.5] Suspicious syntax errors for missing semicolon
72889 same key different types
68555 SearchEngine errors when package and class named the same
72891 missing type parameters for IMethodBindings
72882 ITypeBinding.getQualifiedName for type variables wrong
73371 [1.5] Code formatter doesn't seem to accept enum declarations
73048 Stackoverflow on AST creation
69002 CompilationUnit#destroy contains e.printStackTrace
70787 Compilation warning for IndexManager
73245 Error source range of 'class cannot be superinterface'

# Eclipse Platform Build Notes
Java Development Tooling Core

Eclipse SDK 3.1M2 - 7th September 2004
Project org.eclipse.jdt.core v_506 (cvs).

## What's new in this drop

- `ITypeParameter`s are no longer children of their `IType` or `IMethod`. To get the type parameters of a type or a method use `IType/IMethod#getTypeParameters()`.
- The temporary field `TypeParameter#ENABLED` has been removed.
- Code select (`ICodeAssist#codeSelect()`) return a `ITypeParameter` when a type parameter is selected.
- Added optional compiler diagnosis for usage of 'enum' as an identifier. Corresponding problem ID is IProblem.UseEnumAsAnIdentifier.

-     * COMPILER / Reporting Usage of 'enum' Identifier
      *    When enabled, the compiler will issue an error or a warning whenever 'enum' is
      *    used as an identifier (reserved keyword in 1.5)
      *     - option id:         "org.eclipse.jdt.core.compiler.problem.enumIdentifier"
      *     - possible values:   { "error", "warning", "ignore" }
      *     - default:           "warning"

### Problem Reports Fixed

66533 [1.5] add a warning for 'enum' used as identifier
70892 [1.5][Javadoc] Compiler should parse reference for inline tag @value
73255 [1.5][reconciling] ClassCastException in SourceTypeElementInfo#getTypeParameterBounds
72946 Refactoring context menu does not show inline action on local variables [refactoring] [inline temp]

# Eclipse Platform Build Notes
Java Development Tooling Core

Eclipse SDK 3.1M2 - 31st August 2004
Project org.eclipse.jdt.core v_505 (cvs).

## What's new in this drop

- Added empty "performance" target to test.xml files.

### Problem Reports Fixed

72772 [1.5][Search Engine] ClassCastException: org.eclipse.jdt.internal.compiler.lookup.ParameterizedTypeBinding

# Eclipse Platform Build Notes
Java Development Tooling Core

Eclipse SDK 3.1M2 - 31st August 2004
Project org.eclipse.jdt.core v_504 (cvs).

## What's new in this drop

- Added new Java element `ITypeParameter` that represents a formal type parameter in a generic type or method. Note types and methods should have type parameters as children, but this is currently disabled as JDT UI doesn't support this kind of element yet. To enable set `org.eclipse.jdt.internal.core.TypeParameter#ENABLED` to `true`.

### Problem Reports Fixed

72942 [1.5] 'AT' is visible inside syntax error messages
68343 IDOMType.setSuperInterfaces() with empty array has no impact on Interfaces
72083 [1.5] NPE while compiling FindBugs
71080 [1.5] Type parameter bound <E extends Enum<E>> should be allowed
62070 Should revisit reference recording
36397 Compiling source which indirectly references unavailable classes
62822 [1.5] Bound mismatch: The type X is not a valid substitute for the bounded parameter
72094 NPE inside qualified type reference resolution
72468 "hierarchy of ... type is inconsistent" error message
59082 [1.5] Should not offer argument completion for non generic type
72501 [1.5] CodeAssist - ArrayIndexOutOfBoundsException with ParameterizedQualifiedTypeReference
72640 Codestream target level is initialized with source level
72560 [1.5] VerifyError in nested generics loop

# Eclipse Platform Build Notes
Java Development Tooling Core

Eclipse SDK 3.1M2 - 24th August 2004
Project org.eclipse.jdt.core v_503 (cvs).

## What's new in this drop

- All resource change listeners/builder now react to new encoding change notification.

### Problem Reports Fixed

70193 DBCS - The GB18030 character cannot be correctly generated into ".classpath" file when new a source folder named with GB18030 character.
70997 Debugger doesn't stop in finally block
47074 inability to detect invalid cast between interfaces
71910 Weird exception handlers ranges with any exception handlers
72352 "No completion available" after cast to "String[]"
71702 code completion doesn't work anymore after Array cast.
68847 [1.5] DCR Signature: API to separate raw type and type parameters
72348 [1.5][Type Hierarchy] Super type hierarchy of class extending generic type is empty
72105 [1.5] NPE in SelectionEngine.selectFrom
72230 [1.5][Type Signature] IAE in createCharArrayTypeSignature
68506 Java code formatter strips newline, leaving final line unterminated!
59052 [1.5][reconciling] DOM conversion incomplete for generics
72248 [1.5] StackOverflowError caused by methods type variable
72233 IAE creating AST for java.lang.SuppressWarnings
57585 memory optimization in JavaModelCache
72238 [1.5] CodeAssist - Wrong completion inside parameterized type
68585 index is out of date after encoding change
68594 [1.5] NPE after code assist
70995 [1.5] Add 1.5 constructs in the code formatter
68842 [1.5] AST: parameter type binding: getKey seems wrong
71852 ClassCastException in HandleFactory.createElement(...)
69066 [1.5] getTypeArguments incorrect (?) when type argument is a type variable
68838 [1.5] AST: Missing bindings in type parameters

# Eclipse Platform Build Notes
Java Development Tooling Core

Eclipse SDK 3.1M1 - 10th August 2004 - 3.1 MILESTONE 1
Project org.eclipse.jdt.core v_502 (cvs).

## What's new in this drop

### Problem Reports Fixed

66908 Code assist javadoc confused by duplicate java.lang.String
66570 Code assist fails due to capitalization
71705 [1.5] CodeAssist failure with simple test case
69598 [1.5] Auto Completion not available in new for-loop
71672 [1.5] MethodInvocation has no type arguments
67790 [1.5] AST: ConstructorInvocation type arguments not in source range
70292 [1.5] enum makes Copy, Cut commands fail
71241 [1.5] different methods with same erasure should not override
69901 [1.5] Interface / Generic: unchecked conversion should throw a warning
71467 JavaConventions.ValidatePackageName() does not return ERROR
71113 [1.5] improve DOM/AST specs for bindings for JLS3 constructs
71079 [1.5] ClassCastException resolving Javadoc
70969 [1.5] compile error with conditional operator and wildcards
70611 [1.5] Specific generic class declaration breaks save and load
69931 JDTCompilerAdapter prevents use of Cheetah
71007 [1.5] Qualified name not supported as member value
70984 [1.5] Invalid syntax error
70986 [Prefs] Old Java project prefs are not all stored while migrating to new API
70975 [1.5] Type mismatch when compiling against binary generic method
70656 [1.5] StackOverflow when resolving Enum<FormattedFloatingDecimal$Form>

# Eclipse Platform Build Notes
Java Development Tooling Core

Eclipse SDK 3.1M1 - 27th July 2004 - Codename "Cheetah"
Project org.eclipse.jdt.core v_501 (cvs).

## What's new in this drop

- Plugin version ID got incremented to 3.1.0.
- Added support for method return type covariance
- Added optional compiler diagnosis for serializabe classes missing a declaration of serialVersionUID field. Corresponding problem ID is IProblem.MissingSerialVersion.

    * COMPILER / Reporting Missing Declaration of serialVersionUID Field on Serializable Class
    *    When enabled, the compiler will issue an error or a warning whenever a serializable class is missing a local declaration
    *    of a serialVersionUID field. This field must be declared as static final and be of type long.
    *     - option id:         "org.eclipse.jdt.core.compiler.problem.missingSerialVersion"
    *     - possible values:   { "error", "warning", "ignore" }
    *     - default:           "warning"

- Added `isConstructor()` and `isSynthetic()` getters to MethodReferenceMatch.
  When a search requestor (`SearchRequestor`) accepts this kind of match, it can now distinguish between method and constructor reference matches. It can also know if a constructor reference match is a default constructor or use an implicit super call.
  Note that synthetic method reference match is not supported yet.
- Once 1.5 source compliance is enabled, the typecheck rules for conditional operator (a ? b : c) allows scenario where 'b' and 'c' have a common supertype (i.e. it is no longer required for one to be assignable to the other as in the past). This is required by JLS 3rd edition.
- Fix for bug 69028 requires the index version to be incremented. Indexes will be automatically regenerated upon subsequent search queries (accounting for indexing notification in search progress dialogs).
- The spec for MethodDeclaration.typeParameters was changed to remove the clause that said that type parameters were not meaningful for constructors. According to the latest JLS3, both constructors and methods are allowed to have type parameters. (bug 70665).

### Problem Reports Fixed

48336 [Search] Participants should surface in search progress
70598 [Encoding] ArrayIndexOutOfBoundsException while testing BOM on *.txt files
70767 [1.5] NPE compiling code with explicit constructor invocation
70717 Batch compiler should report compilation errors to console
70665 [DOM/AST] missing type parameters for constructor declaration in JLS3
70618 [1.5] Variable T should be allowed as argument of supertype
70616 [1.5] Unable to bind type variable in binary from Enum<E>
70609 [1.5] NPE compiling Container
70606 [1.5] ClassCastException compiling DefaultTreeCellEditor
69351 [1.5] Error should be issued if generic type is extending Throwable
62822 [1.5] Bound mismatch: The type X is not a valid substitute for the bounded parameter
69626 [1.5] The return type is incompatible
41018 Method reference with member type parameter(s) not found
70053 [1.5] VerifyError - incompatible argument to function
69942 compiler warning for serializable classes that do not explicitly declare serialVersionUID
70398 Java AST creation error due to NullPointerException in IF statement test block.
43587 Searching for references to default constructors reports questionable results
70243 [1.5] no warning for unsafe cast
69799 [1.5] NPE when saving File with forEach loop
69320 [1.5] generic parameter type compiles by eclipse, not by javac
69800 [1.5] eclipse fails to report incompatible types
70295 [1.5] method(Class) is not applicable for Class
70247 [1.5] NPE in TypeVariableBinding
68726 [Javadoc] Target attribute in @see link triggers warning
68993 IllegalArgumentException when opening project preferences
69806 formatter doesn't handle strictfp correctly.
69776 [1.5] VerifyError: Incompatible object argument for function call
69713 [1.5] Cannot save java document, throws nullpointer
69542 [1.5] ByteCode differs from javac ByteCode in behaviour
69554 Eclipse Java compiler is not completely compliant to Javac
69658 typo in javadoc of ClassInstanceCreation
69308 All ASTNodes that deal with modifiers should offer a method setModifiers(List modifiers)
69302 [Javadoc] Invalid reference warning inconsistent with javadoc tool
69275 [Javadoc] Invalid warning on @see link
69272 [Javadoc] Invalid malformed reference (missing separator)
68087 [Javadoc] '-' character should be accepted in tag names
68025 Javadoc processing does not detect some wrong links
68017 Javadoc processing does not detect missing argument to @return
69573 [1.5] Missing Message for Compiler
69028 Anonymous type in argument of super() is not in type hierarchy
69375 [1.5] wildcards: no error for incorrect assignment
68698 Bug in inner class emulation:compiler doesn't reject illegal code.
69359 [1.5] Trouble with "unnecassary cast" warnings
69271 decimal integer literals should not consist of FULL WIDTH Unicode digits
69349 [DOM/AST] Wrong end position for method declaration
69152 [NPE] An internal error occurred during: "Override indicator installation job".
68010 [1.5] Return type of bridge method is not correct inside outliner
69170 [1.5] no error for new T[0]
69353 [1.5] Should reject usage of type parameter in catch block
69288 [1.5] Unsafe type operations should be reported against individual expressions
64305 [1.5] Bad "return type is incompatible" error for array values
69251 [1.5] can't instantiate bounded wildcard
69141 [1.5] Wildcards with lower bound do not work
69276 [1.5] NPE in ReturnStatement
64154 [1.5] incorrect 'constructor not visible'
65943 Closing/opening a project doesn't have the correct delta
68998 [1.5] NPE in java compiler
68146 Search should not populate Java model cache
67789 Java element delta from refresh contains excluded package
68845 [1.5] AST: AbstractTypeDeclaration should have resolveBinding
66512 Invalid classpath entry not rejected
67643 [1.5] Incompatible conditional operand types
68981 [1.5] NPE in code assist
68891 [1.5] TypeVariableBinding does not know his declaring type or method
68862 [1.5] ClassCastException when moving a a java file

# Eclipse Platform Build Notes
Java Development Tooling Core

Eclipse SDK 3.1M1 - 29th June 2004 - Codename "Cheetah"
Project org.eclipse.jdt.core v_500 (Cheetah06) (cvs).

## What's new in this drop

- From target 1.5 on, the JSR bytecode instruction is no longer generated. As a consequence, the corresponding compiler option status will be ignored as soon as -target 1.5 is specified.
- Batch compiler defaults to 1.5 source and target, when toggled in 1.5 compliant mode ("-1.5").
- Added support for generics to JavaModel, thus enabling editor problem reconciling, outliner, type hierarchies.
- Improved codeassist and codeselect handling of generics

### Problem Reports Fixed

68837 [1.5] AST: Missing source range in parameterized type
68133 [1.5] VerifyError: Code segment has wrong length in class file
68863 Missing entry in local variable attribute
68440 [1.5] VerifyError with new for loop
64159 [1.5] call to addAll(Collection) incorrectly dissalowed
68602 [1.5] AST converter fails on local types
66424 [1.5] Collections in new style for loop
64417 [1.5] NPE in SourceTypeBinding.resolveTypesFor
68730 [1.5] No completion
65953 [1.5] Internal Compiler Error: ArrayIndexOutOfBoundsException
58470 [1.5] Source mapper fooled by generics
64336 [1.5] Signature does allow to create parameterized type signatures
68557 [1.5] ArrayIndexOutOfBoundsException in SourceTypeConverter
68006 [1.5] Invalid modifier after parse
65503 [1.5] "new" for-loop inside "old" for-loop gives error
65870 [1.5] AST creation fails when created with comments
64301 [1.5] Cast required where no cast should be required
63556 [1.5] Error when creating generic classes specializing distant generic parameters
63590 [1.5] Cheetah allows generic throws clause
63555 [1.5] Cannot put generic type fields inside static inner class
58722 [1.5] cannot extend interfaces

# Eclipse Platform Build Notes
Java Development Tooling Core

Eclipse Platform Build Notes
Eclipse SDK 3.1M1 - 15th May 2004
Project org.eclipse.jdt.core v_429_Cheetah05 (cvs).

## What's new in this drop

- Cast/instanceof operations are now fully supported, along with extra diagnosis for unsafe type operations.
- Explicit parameterizations of message sends and constructor calls are also supported.

### Problem Reports Fixed

62416 [1.5] An error has occurred when creating this (Java) editor
62292 [1.5] Missing receiver in parameterized message send
61507 [1.5] NPE in computeCompatibleMethod
60681 [1.5] Return type not strict enough
60563 [1.5] VerifyError when using generics and arrays
59258 Possibility to share compiler preferences for a shared project
60556 [1.5] Collections.unmodifiableList(List<A>)
58978 [1.5] Generic method needs better error reporting
59983 [1.5] Internal compiler error
58903 [1.5] Implementing inherited generic methods

# Eclipse Platform Build Notes
Java Development Tooling Core

Eclipse Platform Build Notes
Eclipse SDK 3.1M1 - 23th April 2004
Project org.eclipse.jdt.core v_422_Cheetah04 (cvs).

## What's new in this drop

- Wildcard type compatibilities got reworked quite significantly. In particular, it now diagnoses usage of methods which parameters are of wildcard type (see 59641).
- Covariance is still not supported, but the Cheetah can now issue synthetic bridge methods for allowing overriding to parameterized methods.

### Problem Reports Fixed

59723 [1.5] Compiler rejects usage of ArrayList.toArray(char[][])
59628 [1.5] Erroneous diagnosis for missing abstract method implementation
59641 [1.5] Compiler should refuse usage of wildcard argument values
59147 [1.5] Compiler rejects correct code with wildcards and raw types
58979 [1.5] NullPointerException in compiler

# Eclipse Platform Build Notes
Java Development Tooling Core

Eclipse Platform Build Notes
Eclipse SDK 3.1M1 - 16th April 2004
Project org.eclipse.jdt.core v_421_Cheetah03 (cvs).

## What's new in this drop

- The Cheetah is now able to digest generic methods and perform type inference. It also recognizes the Object.getClass() method and perform adequate substitutions (see 57784).
- Generic types completion is available and type parameters are proposed as possible completions. Currently type parameter proposals are given by ICompletionRequestor#acceptClass().

### Problem Reports Fixed

58715 [1.5] The return type is incompatible
58631 [1.5] Cycle in hierarchy no longer detected
58666 [1.5] Object.getClass() need to be treated special ?
57784 [1.5] Errors using Arrays.asList(T [])
58461 [1.5] java.lang.VerifyError from enhanced for loop

# Eclipse Platform Build Notes
Java Development Tooling Core

Eclipse Platform Build Notes
Eclipse SDK 3.1M1 - 13th April 2004
Project org.eclipse.jdt.core v_421_Cheetah02 (cvs).

## What's new in this drop

- Properly decode signatures of parameterized member types which are flourishing in 1.5 class libs, and were reported as bogus inconsistencies with Cheetah01.

### Problem Reports Fixed

53036 Incorrect highlighting for type problem in qualified type name
57716 [1.5] NPE compiling SelectionParser in source 1.5
57397 [1.5] Unable to save unit

# Eclipse Platform Build Notes
Java Development Tooling Core

Eclipse Platform Build Notes
Eclipse SDK 3.1M1 - 4th April 2004
Project org.eclipse.jdt.core v_420_Cheetah01 (cvs).

## What's new in this drop

- JDK 1.5 support.
- JavaCore 1.5 specific options. Either augmented to consider 1.5 or added.

      * COMPILER / Setting Compliance Level
      *    Select the compliance level for the compiler. In "1.3" mode, source and target settings
      *    should not go beyond "1.3" level.
      *     - option id:         "org.eclipse.jdt.core.compiler.compliance"
      *     - possible values:   { "1.3", "1.4", "1.5" }
      *     - default:           "1.4"
      *
      * COMPILER / Setting Source Compatibility Mode
      *    Specify whether which source level compatibility is used. From 1.4 on, 'assert' is a keyword
      *    reserved for assertion support. Also note, than when toggling to 1.4 mode, the target VM
      *   level should be set to "1.4" and the compliance mode should be "1.4".
      *   Source level 1.5 is necessary to enable generics, autoboxing, covariance, annotations, enumerations
      *   enhanced for loop, static imports and varargs. Once toggled, the target VM level should be set to "1.5"
      *   and the compliance mode should be "1.5".
      *     - option id:         "org.eclipse.jdt.core.compiler.source"
      *     - possible values:   { "1.3", "1.4", "1.5" }
      *     - default:           "1.3"
      *
      * COMPILER / Defining Target Java Platform
      *    For binary compatibility reason, .class files can be tagged to with certain VM versions and later.
      *    Note that "1.4" target require to toggle compliance mode to "1.4" too. Similarily, "1.5" target require
      *    to toggle compliance mode to "1.5".
      *     - option id:         "org.eclipse.jdt.core.compiler.codegen.targetPlatform"
      *     - possible values:   { "1.1", "1.2", "1.3", "1.4", "1.5" }
      *     - default:           "1.2"
      *
      * COMPILER / Reporting Unsafe Type Operation
      *    When enabled, the compiler will issue an error or a warning whenever an operation involves generic types, and potentially
      *    invalidates type safety since involving raw types (e.g. invoking #foo(X<String>) with arguments  (X)).
      *     - option id:         "org.eclipse.jdt.core.compiler.problem.unsafeTypeOperation"
      *     - possible values:   { "error", "warning", "ignore" }
      *     - default:           "warning"
      *
      * COMPILER / Reporting final Bound for Type Parameter
      *    When enabled, the compiler will issue an error or a warning whenever a generic type parameter is associated with a
      *    bound corresponding to a final type; since final types cannot be further extended, the parameter is pretty useless.
      *     - option id:         "org.eclipse.jdt.core.compiler.problem.finalParameterBound"
      *     - possible values:   { "error", "warning", "ignore" }
      *     - default:           "ignore"

### Problem Reports Fixed

56731 [1.5] NPE inside ClassFileStruct when compiling with jre 1.5.0
51262 [1.5] Handling of additional bounds in type parameters
52673 [1.5] ArrayStoreException in 1.5 parser

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