This is an automated email from the git hooks/post-receive script.

ebourg-guest pushed a commit to branch master
in repository ecj.

commit 51aa8b0852fda5bdc5d2ab3a2290eb85d2b2c177
Merge: 95a7ced 565bada
Author: Matthias Klose <[email protected]>
Date:   Sat Oct 10 11:18:07 2009 +0200

    Import Debian changes 3.5.1-1
    
    ecj (3.5.1-1) unstable; urgency=low
    
      * Update to the final 3.5.1 release.
      * Update GCCMain.java from rhug/eclipse-gcj.
    
    ecj (3.5+20090820-1) unstable; urgency=low
    
      * Update to the R3_5_maintenance branch.
        - Fixes eclipse #285466, bootstrap error in OpenJDK.
      * Set sections to java.

 debian/changelog                                   | 15 ++++
 debian/control                                     | 17 ++---
 debian/libecj-java-gcj.postinst                    |  8 +-
 debian/libecj-java-gcj.postrm                      |  8 +-
 debian/rules                                       | 14 ++--
 .../eclipse/jdt/internal/compiler/ClassFile.java   |  6 +-
 .../internal/compiler/ast/AND_AND_Expression.java  |  3 +-
 .../eclipse/jdt/internal/compiler/ast/ASTNode.java |  5 +-
 .../internal/compiler/ast/CompoundAssignment.java  | 12 +++
 .../jdt/internal/compiler/ast/DoStatement.java     |  7 ++
 .../jdt/internal/compiler/ast/EqualExpression.java |  7 +-
 .../internal/compiler/ast/ForeachStatement.java    | 89 ++++++++++++----------
 .../ast/JavadocQualifiedTypeReference.java         |  8 +-
 .../compiler/ast/JavadocSingleTypeReference.java   |  8 +-
 .../internal/compiler/ast/OR_OR_Expression.java    |  3 +-
 .../internal/compiler/ast/PostfixExpression.java   |  4 +-
 .../internal/compiler/ast/PrefixExpression.java    |  4 +-
 .../jdt/internal/compiler/ast/SwitchStatement.java |  4 +-
 .../jdt/internal/compiler/ast/TypeDeclaration.java | 12 ++-
 .../compiler/batch/ClasspathDirectory.java         |  9 ++-
 .../jdt/internal/compiler/batch/ClasspathJar.java  | 11 ++-
 .../jdt/internal/compiler/batch/FileSystem.java    | 16 +++-
 .../jdt/internal/compiler/batch/GCCMain.java       | 21 +++++
 .../internal/compiler/batch/messages.properties    |  4 +-
 .../compiler/lookup/AnnotationBinding.java         |  9 ++-
 .../compiler/lookup/BinaryTypeBinding.java         | 82 +++++++++++++++++---
 .../jdt/internal/compiler/lookup/ClassScope.java   |  8 ++
 .../compiler/lookup/LookupEnvironment.java         | 10 ++-
 .../internal/compiler/lookup/MethodVerifier.java   | 32 ++++++--
 .../internal/compiler/lookup/MethodVerifier15.java | 20 +++--
 .../internal/compiler/lookup/ReferenceBinding.java | 11 ++-
 .../jdt/internal/compiler/lookup/Scope.java        | 33 +++++---
 .../jdt/internal/compiler/lookup/TagBits.java      |  4 +-
 .../compiler/parser/AbstractCommentParser.java     |  5 +-
 .../jdt/internal/compiler/parser/Parser.java       | 17 ++++-
 .../internal/compiler/parser/RecoveredField.java   | 20 +++++
 .../internal/compiler/parser/RecoveredType.java    |  8 ++
 37 files changed, 399 insertions(+), 155 deletions(-)

diff --cc debian/changelog
index fee4b8a,0000000..985b13d
mode 100644,000000..100644
--- a/debian/changelog
+++ b/debian/changelog
@@@ -1,443 -1,0 +1,458 @@@
++ecj (3.5.1-1) unstable; urgency=low
++
++  * Update to the final 3.5.1 release.
++  * Update GCCMain.java from rhug/eclipse-gcj.
++
++ -- Matthias Klose <[email protected]>  Sat, 10 Oct 2009 11:18:07 +0200
++
++ecj (3.5+20090820-1) unstable; urgency=low
++
++  * Update to the R3_5_maintenance branch.
++    - Fixes eclipse #285466, bootstrap error in OpenJDK.
++  * Set sections to java.
++
++ -- Matthias Klose <[email protected]>  Thu, 20 Aug 2009 19:34:12 +0200
++
 +ecj (3.5-1) unstable; urgency=low
 +
 +  * New upstream version.
 +  * Update to the R3_5_maintenance branch 20090728.
 +  * Update GCCMain.java.
 +  * Build using gcj-4.4-jdk on all architectures.
 +
 + -- Matthias Klose <[email protected]>  Tue, 28 Jul 2009 18:55:13 +0200
 +
 +ecj (3.4.2-4) unstable; urgency=low
 +
 +  * Build using gcj-4.4-jdk on hppa.
 +
 + -- Matthias Klose <[email protected]>  Sun, 15 Feb 2009 22:34:28 +0100
 +
 +ecj (3.4.2-1) unstable; urgency=low
 +
 +  * New upstream version 3.4.2, built from the v_894_R34x tag,
 +    R3_4_maintenance branch.
 +
 + -- Matthias Klose <[email protected]>  Sun, 15 Feb 2009 22:34:28 +0100
 +
 +ecj (3.3.0+0728-11) unstable; urgency=low
 +
 +  * Build again for alpha.
 +
 + -- Matthias Klose <[email protected]>  Sun, 01 Feb 2009 09:31:00 +0100
 +
 +ecj (3.3.0+0728-10) unstable; urgency=low
 +
 +  * libecj-java: Recommend default-jre-headless | java2-runtime-headless
 +    instead of java2-runtime.
 +
 + -- Matthias Klose <[email protected]>  Sat, 06 Sep 2008 10:52:13 +0000
 +
 +ecj (3.3.0+0728-9) unstable; urgency=low
 +
 +  * Don't build on alpha, arm, hppa.
 +
 + -- Matthias Klose <[email protected]>  Wed, 09 Apr 2008 04:12:54 +0200
 +
 +ecj (3.3.0+0728-8) unstable; urgency=low
 +
 +  * Fix build failure on alpha.
 +
 + -- Matthias Klose <[email protected]>  Thu, 24 Jan 2008 19:58:40 +0100
 +
 +ecj (3.3.0+0728-7) unstable; urgency=low
 +
 +  * Build using gcj-4.3 on all archs but alpha.
 +
 + -- Matthias Klose <[email protected]>  Thu, 24 Jan 2008 19:11:08 +0100
 +
 +ecj (3.3.0+0728-6) unstable; urgency=low
 +
 +  * Build-depend on libecj-java on arm.
 +
 + -- Matthias Klose <[email protected]>  Mon, 14 Jan 2008 22:07:01 +0100
 +
 +ecj (3.3.0+0728-5) unstable; urgency=medium
 +
 +  * Make ecj architecture dependent, dependencies depend on the jvm used.
 +  * ecj: Depend on gij-x.y.
 +
 + -- Matthias Klose <[email protected]>  Thu, 06 Sep 2007 19:22:58 +0200
 +
 +ecj (3.3.0+0728-4) unstable; urgency=low
 +
 +  * Fix name of renamed jar file (Michael Koch).
 +
 + -- Matthias Klose <[email protected]>  Wed, 05 Sep 2007 00:08:06 +0200
 +
 +ecj (3.3.0+0728-3) unstable; urgency=medium
 +
 +  * Use ecj-standalone.jar to build the ecj-gcj and ecj1 binaries.
 +  * ecj-gcj: Depend on ecj. Closes: #440259.
 +
 + -- Matthias Klose <[email protected]>  Thu, 30 Aug 2007 23:33:08 +0200
 +
 +ecj (3.3.0+0728-2) unstable; urgency=low
 +
 +  * Tighten build-dependency on libgcj-bc.
 +
 + -- Matthias Klose <[email protected]>  Sat, 25 Aug 2007 20:12:38 +0200
 +
 +ecj (3.3.0+0728-1) unstable; urgency=medium
 +
 +  * New upstream version, taken from the R3_3_maintenance tag.
 +  * Build using gcj-4.2 on all architectures except alpha and m68k.
 +  * Stop building the ecj-bootstrap and ecj-bootstrap-gcj packages.
 +  * Build a libecj-java-gcj package.
 +  * Build an ecj1 package on arm, BC-compile ecj1.
 +  * Update debian/copyright, eclipse is EPL, not CPL anymore.
 +
 + -- Matthias Klose <[email protected]>  Sat, 25 Aug 2007 12:35:30 +0200
 +
 +ecj (3.3.0-2) unstable; urgency=low
 +
 +  * Apply fix for upstream report #195317.
 +
 + -- Matthias Klose <[email protected]>  Fri, 20 Jul 2007 12:05:37 +0200
 +
 +ecj (3.3.0-1) unstable; urgency=low
 +
 +  * New upstream release.
 +  * Don't reference the transitional bootstrap package in the README.
 +    Closes: #426887.
 +  * Split out the library into libecj-java. Closes: #421621.
 +
 + -- Matthias Klose <[email protected]>  Sat,  7 Jul 2007 02:13:27 +0200
 +
 +ecj (3.3~M7-2) unstable; urgency=low
 +
 +  * debian/control: Make ecj and ecj-gcj conflict and replace their
 +    eclipse-ecj and eclipse-ecj-gcj counterparts. Closes: #421302.
 +
 + -- Michael Koch <[email protected]>  Sun, 20 May 2007 09:57:58 -0100
 +
 +ecj (3.3~M7-1) unstable; urgency=low
 +
 +  * New upstream release.
 +    - Fixes issues with classes extending java.io.PrintWriter and implementing
 +      some random interface. Closes: #424504.
 +    - Removed debian/patches/ecj-square-bracket-classpath.diff.
 +      Applied upstream.
 +
 + -- Michael Koch <[email protected]>  Fri, 18 May 2007 09:32:35 -0100
 +
 +ecj (3.2.2-2) unstable; urgency=low
 +
 +  * Loosen dependency on gij-4.1, libgcj7-jar. Closes: #421488.
 +
 + -- Matthias Klose <[email protected]>  Sun, 29 Apr 2007 22:19:47 +0200
 +
 +ecj (3.2.2-1) unstable; urgency=low
 +
 +  * Upload to unstable.
 +
 + -- Matthias Klose <[email protected]>  Fri, 27 Apr 2007 01:04:45 +0200
 +
 +ecj (3.2.2-0) experimental; urgency=low
 +
 +  * New upstream version.
 +    - Update patches.
 +  * (Build-)depend on gcj generics backport.
 +  * Build-Conflicts with ecj-bootstrap-gcj (<< 3.2.2).
 +  * Merge from Ubuntu:
 +    - Split out patches.
 +    - Add ecj-square-bracket-classpath.diff.
 +    - ecj-bootstrap: Add compatibilty script ecj-bootstrap.
 +    - Install the jar as eclipse-ecj.jar, provide an ecj.jar symlink.
 +    - Rename source and binary package to ecj.
 +    - Pass gcj and gcj-dbtool versions to aot-compile.
 +
 + -- Matthias Klose <[email protected]>  Sat,  3 Mar 2007 19:37:46 +0100
 +
 +ecj-bootstrap (3.2.1-6) unstable; urgency=low
 +
 +  * Fix PR java/30585 (-Werror and -Wall not working). Taken from the rhug
 +    repository.
 +
 + -- Matthias Klose <[email protected]>  Sat,  3 Feb 2007 14:16:47 +0100
 +
 +ecj-bootstrap (3.2.1-5) unstable; urgency=low
 +
 +  * debian/control: Call it a "standalone" version, not a "bootstrap"
 +    version. The package is used as the compiler in java-gcj-compat-dev
 +    as well. See also #396170.
 +
 + -- Matthias Klose <[email protected]>  Thu, 11 Jan 2007 20:44:40 +0100
 +
 +ecj-bootstrap (3.2.1-4) unstable; urgency=medium
 +
 +  * Refactor batch/org/eclipse/jdt/internal/compiler/batch/Main.java,
 +    add batch/org/eclipse/jdt/internal/compiler/batch/GCCMain.java,
 +    needed to bootstrap GCC-4.3.
 +
 + -- Matthias Klose <[email protected]>  Tue,  9 Jan 2007 00:09:22 +0100
 +
 +ecj-bootstrap (3.2.1-3) unstable; urgency=low
 +
 +  * Add missing build dependency.
 +
 + -- Matthias Klose <[email protected]>  Sun,  8 Oct 2006 01:40:00 +0200
 +
 +ecj-bootstrap (3.2.1-2) unstable; urgency=low
 +
 +  * Add 1.6 compatibility in package description.
 +  * Use own copy of aot-compile to build with less memory resources
 +    on arm and m68k.
 +  * Build the standalone binary without -fjni -findirect-dispatch.
 +
 + -- Matthias Klose <[email protected]>  Sat,  7 Oct 2006 23:38:47 +0200
 +
 +ecj-bootstrap (3.2.1-1) unstable; urgency=medium
 +
 +  * New upstream version.
 +  * ecj-bootstrap-gcj: Add postrm script.
 +
 + -- Matthias Klose <[email protected]>  Tue,  3 Oct 2006 09:35:39 +0200
 +
 +ecj-bootstrap (3.2-3) unstable; urgency=low
 +
 +  * Install classmap db in /usr/share/gcj/classmap.db, install jar.so
 +    in /usr/lib/gcj.
 +  * ecj-bootstrap-gcj.postinst: Use rebuild-gcj-db.
 +  * Build depend on gcj-4.1 (>= 4.1.1-13).
 +
 + -- Matthias Klose <[email protected]>  Sat,  2 Sep 2006 13:55:21 +0000
 +
 +ecj-bootstrap (3.2-2) experimental; urgency=low
 +
 +   * Build using the gcj backport from experimental.
 +   * Do not build the binary ecj.
 +
 + -- Matthias Klose <[email protected]>  Sun, 13 Aug 2006 13:01:45 +0200 
 +
 +ecj-bootstrap (3.2-1) unstable; urgency=low
 +
 +  * New upstream version.
 +
 + -- Matthias Klose <[email protected]>  Mon, 31 Jul 2006 18:16:52 +0000
 +
 +ecj-bootstrap (3.1.2-6) unstable; urgency=low
 +
 +  * ecj-bootstrap-gcj: Do not register an alternative for ecj.
 +  * ecj-bootstrap: Use ecj-bootstrap-gcj, if available.
 +  * The above changes set the bootclasspath to /usr/share/java/libgcj-4.1.jar,
 +    if no bootclasspath is set. Closes: #361608, #361806.
 +  * Do not try to rebuild the jar file using the gij on arm and m68k.
 +
 + -- Matthias Klose <[email protected]>  Thu,  1 Jun 2006 22:55:00 +0200
 +
 +ecj-bootstrap (3.1.2-5) unstable; urgency=low
 +
 +  * Updated Standards-Version to 3.7.2. No changes needed.
 +
 + -- Michael Koch <[email protected]>  Sat,  6 May 2006 16:25:40 +0000
 +
 +ecj-bootstrap (3.1.2-4) unstable; urgency=low
 +
 +  * Build using gij-4.1/gcj-4.1.
 +  * Rebuild using ecj on all architectures.
 +  * Remove conflict on virtual package ecj.
 +
 + -- Matthias Klose <[email protected]>  Sat,  1 Apr 2006 11:29:03 +0000
 +
 +ecj-bootstrap (3.1.2-3) experimental; urgency=low
 +
 +   * Build using gcj-4.1, upload to experimental.
 +
 + -- Matthias Klose <[email protected]>  Sat, 28 Jan 2006 08:35:09 +0000 
 +
 +ecj-bootstrap (3.1.2-2ubuntu3) dapper; urgency=low
 +
 +  * Use gij-4.1 in the package scripts.
 +
 + -- Matthias Klose <[email protected]>  Sun, 26 Feb 2006 21:00:44 +0000
 +
 +ecj-bootstrap (3.1.2-2ubuntu2) dapper; urgency=low
 +
 +  * Build using gcj-4.1.
 +
 + -- Matthias Klose <[email protected]>  Sun, 19 Feb 2006 01:07:40 +0000
 +
 +ecj-bootstrap (3.1.2-2build1) dapper; urgency=low
 +
 +  * Require gcj-4.0.2-9 to build.
 +
 + -- Matthias Klose <[email protected]>  Thu, 16 Feb 2006 03:18:22 +0000
 +
 +ecj-bootstrap (3.1.2-2) unstable; urgency=low
 +
 +  * Set the bootclasspath to /usr/share/java/libgcj-4.0.jar, if not called
 +    with the -bootclasspath and /usr/lib/jvm/java-gcj/jre/lib/rt.jar does
 +    not exist (java-gcj-compat not installed). Closes: #350542.
 +
 + -- Matthias Klose <[email protected]>  Thu,  9 Feb 2006 16:33:45 +0000
 +
 +ecj-bootstrap (3.1.2-1) unstable; urgency=low
 +
 +  * New upstream version.
 +
 + -- Matthias Klose <[email protected]>  Sat, 28 Jan 2006 08:09:25 +0000
 +
 +ecj-bootstrap (3.1.1-4) unstable; urgency=low
 +
 +  * Depend on libgcj6-jar instead of libgcj6-common.
 +
 + -- Matthias Klose <[email protected]>  Thu,  5 Jan 2006 19:14:49 +0000
 +
 +ecj-bootstrap (3.1.1-3.1) unstable; urgency=low
 +
 +  [ Arnaud Fontaine ]
 +  * NMU: added a backslash at the end of the first line of
 +    'debian/ecj-bootstrap-gcj.postinst'. Closes: #335031.
 +
 + -- Christoph Berg <[email protected]>  Sat, 29 Oct 2005 12:09:06 +0200
 +
 +ecj-bootstrap (3.1.1-3) unstable; urgency=low
 +
 +  * On arm and hppa, don't rebuild ecj using gij.
 +
 + -- Matthias Klose <[email protected]>  Thu, 20 Oct 2005 19:08:20 +0000
 +
 +ecj-bootstrap (3.1.1-2) unstable; urgency=low
 +
 +  * Add a javac alternative (priority higher than gcj).
 +  * ecj-bootstrap-gcj: Add slave alternative for the man page.
 +    Addresses #328743.
 +
 + -- Matthias Klose <[email protected]>  Thu, 20 Oct 2005 00:11:27 +0200
 +
 +ecj-bootstrap (3.1.1-1) unstable; urgency=low
 +
 +  * New upstream version.
 +  * Remove bootstrap workaround, tighten build dependency to gcj-4.0.2.
 +  * Fix symlink to manpage (closes: #330080).
 +
 + -- Matthias Klose <[email protected]>  Sat,  1 Oct 2005 18:32:05 +0200
 +
 +ecj-bootstrap (3.0.93-1) unstable; urgency=low
 +
 +  * New upstream version (3.1rc3). Taken from the eclipse-3.1 package,
 +    file ecj.zip.
 +
 + -- Matthias Klose <[email protected]>  Wed, 14 Sep 2005 12:54:56 +0000
 +
 +ecj-bootstrap (3.0.1-4ubuntu6) breezy; urgency=low
 +
 +  * Only build one java file per gcj call, ignore errors on first
 +    build. Closes: #327161, Ubuntu 14938.
 +  * Add more error checking in debian/rules.
 +  * Install manual page for ecj alternative as well.
 +
 + -- Matthias Klose <[email protected]>  Wed, 14 Sep 2005 14:19:57 +0200
 +
 +ecj-bootstrap (3.0.1-4ubuntu5) breezy; urgency=low
 +
 +  * Reenable ecj-bootstrap-gcj. (Build-)depend on fixed gcj-4.0.
 +
 + -- Matthias Klose <[email protected]>  Sat,  2 Jul 2005 08:25:02 +0000
 +
 +ecj-bootstrap (3.0.1-4ubuntu4) breezy; urgency=low
 +
 +  * Temporarily disable building ecj-bootstrap-gcj. FTBFS on amd64. Unbreak
 +    ant's dependency on ecj (>= 3.0.1-4ubuntu2).
 +
 + -- Matthias Klose <[email protected]>  Thu, 30 Jun 2005 09:59:20 +0000
 +
 +ecj-bootstrap (3.0.1-4ubuntu3) breezy; urgency=low
 +
 +  * Include manpages for ecj-bootstrap and ecj-bootstrap-gcj (closes: 
#316641).
 +
 + -- Jeff Bailey <[email protected]>  Wed, 29 Jun 2005 14:52:57 +0000
 +
 +ecj-bootstrap (3.0.1-4ubuntu2) breezy; urgency=low
 +
 +  * Merged ecj-adapter.jar into ecj.jar in preparation for Eclipse 3.1
 +    upgrade. Upstream has laid out ecj in this fashion.
 +  * Removed java-gcj-compat bits which were unneccassary.
 +  * Added native versions of the ecj binary and ecj.jar in a new package
 +    named ecj-bootstrap-gcj. This increases the compilation speed of
 +    packages built with this copy of ecj.
 +  * Added new alternatives for /usr/bin/ecj for the native version.
 +  * First package successfully creating a classmap.db.
 +
 + -- Jerry Haltom <[email protected]>  Tue, 14 Jun 2005 21:38:29 -0500
 +
 +ecj-bootstrap (3.0.1-4ubuntu1) breezy; urgency=low
 +
 +  * Add a /usr/bin/ecj binary.
 +
 + -- Matthias Klose <[email protected]>  Sat, 11 Jun 2005 16:57:27 +0000
 +
 +ecj-bootstrap (3.0.1-3) experimental; urgency=low
 +
 +  * Synchronize.
 +
 + -- Matthias Klose <[email protected]>  Wed,  1 Jun 2005 23:24:48 +0200
 +
 +ecj-bootstrap (3.0.1-1ubuntu6) breezy; urgency=low
 +
 +  * Now provides 'ecj' which will also be provided by the future
 +    eclipse-ecj package built from full Eclipse source.
 +  * Removed universe/ from Section.
 +  * Now refering to libgcj-4.0.jar instead of 4.0.0.jar to handle
 +    changing versions better.
 +
 + -- Jerry Haltom <[email protected]>  Wed,  1 Jun 2005 14:12:16 -0500
 +
 +ecj-bootstrap (3.0.1-2) experimental; urgency=low
 +
 +  * Upload to experimental, set maintainer to Debian Java Matainers,
 +    request by Michael Koch.
 +
 + -- Matthias Klose <[email protected]>  Sun, 22 May 2005 15:53:07 +0000
 +
 +ecj-bootstrap (3.0.1-1ubuntu5) hoary; urgency=low
 +
 +  * Fixed path to ant.jar.
 +
 + -- Jerry Haltom <[email protected]>  Mon, 28 Mar 2005 20:17:03 -0600
 +
 +ecj-bootstrap (3.0.1-1ubuntu4) hoary; urgency=low
 +
 +  * Added build of Ant adapter. This introduces a circular dependency
 +    on ecj-bootstrap and Ant.
 +
 + -- Jerry Haltom <[email protected]>  Sun, 27 Mar 2005 22:51:13 -0600
 +
 +ecj-bootstrap (3.0.1-1ubuntu3) hoary; urgency=low
 +
 +  * Added missing dependency on libgcj6-common.
 +
 + -- Jerry Haltom <[email protected]>  Wed, 23 Feb 2005 22:45:00 -0600
 +
 +ecj-bootstrap (3.0.1-1ubuntu2) hoary; urgency=low
 +
 +  * Removed argument modification from ecj and moved it to ecj-wrapper in the
 +    style of gcj-wrapper.
 +  * Jeff Bailey corrected the Posix-compliant argument expansion in
 +    ecj-wrapper with the help of David Weinehall.
 +  * ecj now rebuilds with itself as a sanity test.
 +
 + -- Jerry Haltom <[email protected]>  Mon, 14 Feb 2005 20:34:25 -0600
 +
 +ecj-bootstrap (3.0.1-1ubuntu1) hoary; urgency=low
 +
 +  * First upload to Ubuntu.
 +
 +  * Tighten build deps.  Use "ecj" instead of "ecj-bootstrap" to
 +    allow ant to depend on ecj | ecj-bootstrap.
 +
 +  * Posixify wrapper
 +
 + -- Jeff Bailey <[email protected]>  Fri, 11 Feb 2005 20:37:21 +0000
 +
 +ecj-bootstrap (3.0.1-0) unstable; urgency=low
 +
 +  * Initial release.
 +
 + -- Jerry Haltom <[email protected]>  Wed, 09 Feb 2005 19:36:07 -0600
diff --cc debian/control
index d7ed16a,0000000..de39efb
mode 100644,000000..100644
--- a/debian/control
+++ b/debian/control
@@@ -1,71 -1,0 +1,68 @@@
 +Source: ecj
- Section: devel
++Section: java
 +Priority: optional
 +Maintainer: Debian Java Maintainers 
<[email protected]>
 +Uploaders: Jerry Haltom <[email protected]>, Michael Koch 
<[email protected]>, Matthias Klose <[email protected]>
 +Build-Depends: cdbs (>= 0.4.26), debhelper (>= 5),
 + gcj-4.4-jdk,
 + libgcj-bc (>= 4.3.3-1),
 + libecj-java (>= 3.3.0+0728) [arm], unzip [arm],
 + fastjar, ant, zip, dpkg (>= 1.13.19), python, time
 +Build-Conflicts: ecj-bootstrap-gcj (<< 3.2.2)
- Standards-Version: 3.8.2
++Standards-Version: 3.8.3
 +
 +Package: ecj
 +Architecture: any
- Depends: libecj-java (>= ${source:Version}), ${pkg:gij}, ${pkg:libgcjjar}, 
java-common (>= 0.23)
++Depends: libecj-java (>= ${source:Version}), ${pkg:gij}, ${pkg:libgcjjar}, 
java-common (>= 0.23), ${misc:Depends}
 +Recommends: ecj-gcj
 +Conflicts: ecj-bootstrap (<< 3.2.2), eclipse-ecj
 +Replaces: ecj-bootstrap (<< 3.2.2), eclipse-ecj
 +Suggests: ant
 +Description: standalone version of the Eclipse Java compiler
 + This package provides a standalone version of the Eclipse JDT compiler which
 + is distributed as part of Eclipse. It passes the JCK (Java Compatibility Kit)
 + and is compatible with Java 1.3, 1.4, 1.5, 1.6 and 1.7.
 +
 +Package: libecj-java
 +Architecture: all
- Section: libs
- Depends: java-common (>= 0.23)
++Depends: java-common (>= 0.23), ${misc:Depends}
 +Conflicts: ecj-bootstrap (<< 3.2.2), eclipse-ecj
 +Replaces: ecj-bootstrap (<< 3.2.2), eclipse-ecj, ecj (<< 3.3.0-1)
 +Recommends: default-jre-headless | java2-runtime-headless | 
java5-runtime-headless
 +Suggests: ecj, ant, libecj-java-gcj
 +Description: Eclipse Java compiler (library)
 + This package provides a standalone version of the Eclipse JDT compiler 
library
 + which is distributed as part of Eclipse. It passes the JCK (Java 
Compatibility
 + Kit) and is compatible with Java 1.3, 1.4, 1.5, 1.6 and 1.7.
 +
 +Package: libecj-java-gcj
 +Architecture: any
- Section: libs
- Depends: java-common (>= 0.23), libecj-java (>= ${source:Version}), 
${shlibs:Depends}
++Depends: java-common (>= 0.23), libecj-java (>= ${source:Version}), 
${shlibs:Depends}, ${misc:Depends}
 +Replaces: ecj-bootstrap-gcj (<< 3.2.2), eclipse-ecj-gcj, ecj-gcj (<< 
3.3.0+0728)
 +Description: Eclipse Java compiler (native library)
 + This package provides a standalone version of the Eclipse JDT compiler 
library
 + which is distributed as part of Eclipse. It passes the JCK (Java 
Compatibility
 + Kit) and is compatible with Java 1.3, 1.4, 1.5, 1.6 and 1.7.
 + .
 + This package contains a native version of libecj-java built using gcj.
 +
 +Package: ecj1
 +Architecture: alpha arm armel
- Section: devel
- Depends: ${shlibs:Depends}
++Depends: ${shlibs:Depends}, ${misc:Depends}
 +Description: java byte code compiler used by gcj
 + This package provides a standalone version of the java byte code compiler
 + used by gcj.
 +
 +Package: ecj-gcj
 +Architecture: any
- Depends: ecj (>= ${source:Version}), libecj-java-gcj (>= ${source:Version}), 
${shlibs:Depends}
++Depends: ecj (>= ${source:Version}), libecj-java-gcj (>= ${source:Version}), 
${shlibs:Depends}, ${misc:Depends}
 +Recommends: java-gcj-compat (>= 1.0.69)
 +Replaces: ecj-bootstrap-gcj (<< 3.2.2), eclipse-ecj-gcj
 +Conflicts: eclipse-ecj-gcj
 +Provides: libecj-java-gcj
 +Description: standalone version of the Eclipse Java compiler (native version)
 + This package provides a standalone version of the Eclipse JDT compiler which
 + is distributed as part of Eclipse. It passes the JCK (Java Compatibility Kit)
 + and is compatible with Java 1.3, 1.4, 1.5, 1.6 and 1.7.
 + .
 + This package contains a native version of ecj built using gcj.
diff --cc debian/libecj-java-gcj.postinst
index 6901eaa,0000000..d74fea3
mode 100644,000000..100644
--- a/debian/libecj-java-gcj.postinst
+++ b/debian/libecj-java-gcj.postinst
@@@ -1,7 -1,0 +1,9 @@@
- #! /bin/sh -e
++#! /bin/sh
 +
- if [ "$1" = configure ] && [ -x /usr/bin/rebuild-gcj-db ]; then
-     /usr/bin/rebuild-gcj-db
++set -e
++
++if [ "$1" = configure ] && which rebuild-gcj-db >/dev/null 2>&1; then
++    rebuild-gcj-db
 +fi
 +
 +#DEBHELPER#
diff --cc debian/libecj-java-gcj.postrm
index e6c5b04,0000000..328faf5
mode 100644,000000..100644
--- a/debian/libecj-java-gcj.postrm
+++ b/debian/libecj-java-gcj.postrm
@@@ -1,7 -1,0 +1,9 @@@
- #! /bin/sh -e
++#! /bin/sh
 +
- if [ "$1" = remove ] && [ -x /usr/bin/rebuild-gcj-db ]; then
-     /usr/bin/rebuild-gcj-db
++set -e
++
++if [ "$1" = remove ] && which rebuild-gcj-db >/dev/null 2>&1; then
++    rebuild-gcj-db
 +fi
 +
 +#DEBHELPER#
diff --cc debian/rules
index c11a68f,0000000..bbbe938
mode 100755,000000..100755
--- a/debian/rules
+++ b/debian/rules
@@@ -1,243 -1,0 +1,243 @@@
 +#!/usr/bin/make -f
 +
 +include /usr/share/cdbs/1/rules/debhelper.mk
 +include /usr/share/cdbs/1/rules/simple-patchsys.mk
 +
 +DEB_HOST_ARCH ?= $(shell dpkg-architecture -qDEB_HOST_ARCH)
 +
 +GCC_VERSION   = 4.4
 +LIBGCJ_EXT    = 10
 +LIBGCJ_SOVER  = 10
 +REQ_VERSION   = 4.4.1
 +
 +ant_version = 1.7
 +ant_version =
 +GCJ = gcj-$(GCC_VERSION)
 +GIJ = gij-$(GCC_VERSION)
 +GCJDBTOOL = gcj-dbtool-$(GCC_VERSION)
 +GCJSUBDIR = /usr/lib/gcj-$(GCC_VERSION)-$(LIBGCJ_SOVER)
 +
 +with_native := yes
 +with_rebuild := yes
 +with_sourcebuild := yes
 +
 +ifneq (,$(filter $(DEB_HOST_ARCH), arm armel))
 +  with_rebuild := no
 +endif
 +
 +ifneq (,$(filter $(DEB_HOST_ARCH), arm))
 +  with_sourcebuild := no
 +endif
 +
 +DEB_DH_GENCONTROL_ARGS = -- \
 +      '-Vpkg:gij=gcj-$(GCC_VERSION)-jre-headless (>= $(REQ_VERSION))' \
 +      '-Vpkg:libgcjjar=gcj-$(GCC_VERSION)-jre-lib (>= $(REQ_VERSION))'
 +
 +JAR = eclipse-ecj.jar
 +
 +default: build
 +
 +eclipse_root = $(CURDIR)/../eclipse
 +
 +build/ecj:: build/stamp-bytecode build/stamp-nativecode
 +
 +build/stamp-bytecode:
 +ifneq (,$(findstring $(DEB_HOST_ARCH),arm))
 +      @echo 'ecj is not built anymore on this architecture.'
 +      @echo 'People insist on 100% compatible packages without providing any 
help.'
-       @echo 'The porter lists are quiet on the topic of better gij/gcj 
support for
++      @echo 'The porter lists are quiet on the topic of better gij/gcj 
support for'
 +      @echo 'these architectures.'
 +      false
 +endif
 +      rm -rf build/bin
 +      mkdir -p build/bin
 +
 +ifeq ($(with_sourcebuild),yes)
 +      cp -r src/org.eclipse.jdt.core/org build/bin/
 +      cat gcc.properties \
 +          >> 
build/bin/org/eclipse/jdt/internal/compiler/batch/messages.properties
 +      rm -rf build/bin/org/eclipse/jdt/internal/compiler/apt
 +      rm -rf build/bin/org/eclipse/jdt/internal/compiler/tool
 +
 +      find build/bin -name '*.java' > build/sourcefiles
 +      split -l 25 build/sourcefiles ecj-sources.
 +      ls -l
 +      mv ecj-sources.* build/bin
 +      ls -l . build/bin
 +
 +      set -e; \
 +      for list in $$(find build/bin -name 'ecj-sources.*'); do \
 +          echo "building files in $$list ..."; \
 +          echo $(GCJ) -d build/bin -C -g \
 +              -I/usr/share/ant$(ant_version)/lib/ant.jar \
 +              -Ibuild/bin \
 +              $$(cat $$list); \
 +          $(GCJ) -v -d build/bin -C -g \
 +              -I/usr/share/ant$(ant_version)/lib/ant.jar \
 +              -Ibuild/bin \
 +              $$(cat $$list); \
 +      done
 +
 +      find build/bin -name 'sources.list' -exec rm -f {} \;
 +      find build/bin -name '*.java' -exec rm -f {} \;
 +      find build/bin -name '*.html' -exec rm -f {} \;
 +
 +      mkdir -p build/bootstrap
 +      fastjar -c -C build/bin . -f build/bootstrap/$(JAR)
 +
 +  ifeq ($(with_rebuild),yes)
 +      : # rebuild the compiler
 +      rm -rf build/bin
 +      mkdir -p build/bin
 +      cp -r src/org.eclipse.jdt.core/org build/bin/
 +      rm -rf build/bin/org/eclipse/jdt/internal/compiler/apt
 +      rm -rf build/bin/org/eclipse/jdt/internal/compiler/tool
 +
 +      time $(GIJ) \
 +          -classpath 
build/bootstrap/$(JAR):/usr/share/ant$(ant_version)/lib/ant.jar \
 +          org.eclipse.jdt.internal.compiler.batch.Main \
 +          -bootclasspath /usr/share/java/libgcj-$(GCC_VERSION).jar \
 +          build/bin
 +
 +      find build/bin -name '*.java' -exec rm -f {} \;
 +      find build/bin -name '*.html' -exec rm -f {} \;
 +
 +      mkdir -p build/dist
 +      fastjar -c -C build/bin . -f build/dist/$(JAR)
 +  else
 +      mkdir -p build/dist
 +      cp -p build/bootstrap/$(JAR) build/dist/$(JAR)
 +  endif
 +else
 +      mkdir -p build/bin
 +      unzip -d build/bin -q /usr/share/java/eclipse-ecj.jar
 +      mkdir -p build/dist
 +      cp -p /usr/share/java/eclipse-ecj.jar build/dist/$(JAR)
 +endif
 +      mkdir -p build/exe
 +      cp build/dist/$(JAR) build/exe/ecj-standalone.jar
 +      zip -d build/exe/ecj-standalone.jar \
 +              'org/eclipse/jdt/core/JDTCompilerAdapter*'
 +
 +      touch build/stamp-bytecode
 +
 +build/stamp-nativecode: build/stamp-bytecode
 +      find build/dist -name '*.jar.*.jar' | xargs -r rm -f
 +ifeq ($(with_native),yes)
 +      : # $(JAR).so
 +
 +      cd build/bin && find -name '*.rsc' -o -name '*.properties' \
 +          | fastjar -c -@ - -f $(CURDIR)/build/resources.jar
 +      $(GCJ) \
 +          -c -O2 -g -fPIC -fjni -findirect-dispatch \
 +          -o build/dist/resources.o build/resources.jar
 +      cp -p build/dist/resources.o build/exe/
 +
 +      PYTHONPATH=$(CURDIR)/debian \
 +      RPATH=-Wl,-rpath,$(GCJSUBDIR) \
 +        time python debian/aot-compile \
 +          --gcj=$(GCJ) --dbtool=$(GCJDBTOOL) \
 +          -L /usr/lib/gcj build/dist build/dist
 +
 +      PYTHONPATH=$(CURDIR)/debian \
 +      RPATH=-Wl,-rpath,$(GCJSUBDIR) \
 +        time python debian/aot-compile \
 +          --gcj=$(GCJ) --dbtool=$(GCJDBTOOL) \
 +          -L /usr/lib/gcj build/exe build/exe
 +
 +  ifeq (0,1)
 +      : # ecj-gcj
 +      time $(GCJ) \
 +          -O1 -g -Wl,-O1 -Wl,-rpath,$(GCJSUBDIR) \
 +          --main=org.eclipse.jdt.internal.compiler.batch.Main \
 +          -o build/dist/ecj-gcj build/exe/ecj-standalone.jar
 +      : # ecj1
 +      time $(GCJ) \
 +          -O1 -g -Wl,-O1 -Wl,-rpath,$(GCJSUBDIR) \
 +          --main=org.eclipse.jdt.internal.compiler.batch.GCCMain \
 +          -o build/dist/ecj1 build/exe/ecj-standalone.jar
 +  endif
 +endif
 +      touch build/stamp-nativecode
 +
 +
 +install/libecj-java::
 +      mkdir -p debian/tmp/usr/share/java
 +      install -m 644 build/dist/$(JAR) debian/tmp/usr/share/java/
 +
 +install/ecj::
 +      mkdir -p debian/tmp/usr/bin
 +      sed 's/@ver@/$(GCC_VERSION)/g' debian/ecj.in \
 +        > debian/tmp/usr/bin/ecj
 +      chmod 755 debian/tmp/usr/bin/ecj
 +
 +install/libecj-java-gcj::
 +ifeq ($(with_native),yes)
 +      mkdir -p debian/tmp/usr/lib/gcj
 +      install -m 644 build/dist/$(JAR).so debian/tmp/usr/lib/gcj
 +
 +      mkdir -p debian/tmp/usr/share/gcj/classmap.d
 +      install -m 644 build/dist/*.db \
 +              debian/tmp/usr/share/gcj/classmap.d/
 +endif
 +
 +install/ecj1::
 +ifeq ($(with_native),yes)
 +      mkdir -p debian/ecj1/usr/lib/gcc
 +      install -m 755 build/exe/ecj1 debian/ecj1/usr/lib/gcc/
 +endif
 +
 +install/ecj-gcj::
 +ifeq ($(with_native),yes)
 +      mkdir -p debian/tmp/usr/bin
 +      install -m 755 build/exe/ecj-gcj debian/tmp/usr/bin/
 +endif
 +      mkdir -p debian/ecj-gcj/usr/bin
 +
 +      mkdir -p debian/ecj-gcj/usr/share/man/man1
 +      ln -sf ecj.1.gz \
 +        debian/ecj-gcj/usr/share/man/man1/ecj-gcj.1.gz
 +
 +binary-predeb/ecj1::
 +#     sed -i 's/libgcj[1-9][^,]*//;s/,,/,/' debian/ecj1.substvars
 +
 +binary-predeb/ecj-gcj::
 +#     sed -i 's/libgcj[1-9][^,]*//;s/,,/,/' debian/ecj-gcj.substvars
 +
 +clean::
 +      rm -rf build
 +      rm -f debian/*.pyc
 +
 +RR=../cvs/R3_5_maintenance/
- RR=../cvs/R3_5/
- tag = R3_5
++RR=../cvs/R3_5_1/
++tag = R3_5_1
 +
 +get-source:
 +      rm -rf org.eclipse.jdt.core
-       @echo Press enter for the password
-       cvs -d :pserver:[email protected]:/cvsroot/eclipse login
-       cvs -z3 -d :pserver:[email protected]:/cvsroot/eclipse \
-         co -r $(tag) org.eclipse.jdt.core
++#     @echo Press enter for the password
++#     cvs -d :pserver:[email protected]:/cvsroot/eclipse login
++#     cvs -z3 -d :pserver:[email protected]:/cvsroot/eclipse \
++#       co -r $(tag) org.eclipse.jdt.core
 +      rm -rf tmp-src
 +      mkdir -p tmp-src/org.eclipse.jdt.core
 +      cp -p $(RR)org.eclipse.jdt.core/scripts/about.html \
 +              tmp-src/org.eclipse.jdt.core/
 +      cp -p $(RR)org.eclipse.jdt.core/scripts/build.xml \
 +              tmp-src/org.eclipse.jdt.core/
 +      tar -c -f - -C $(RR)org.eclipse.jdt.core/compiler org \
 +          | tar -x -f - -C tmp-src/org.eclipse.jdt.core/
 +
 +      tar -c -f - -C $(RR)org.eclipse.jdt.core/antadapter org META-INF \
 +          | tar -x -f - -C tmp-src/org.eclipse.jdt.core/
 +      find tmp-src -name CheckDebugAttributes.java | xargs -r rm -f
 +
 +      tar -c -f - -C $(RR)org.eclipse.jdt.core/batch org \
 +          | tar -x -f - -C tmp-src/org.eclipse.jdt.core/
 +
 +      mkdir -p tmp-src/org.eclipse.jdt.core/META-INF/services
 +      cp -p $(RR)org.eclipse.jdt.core/scripts/META-INF/MANIFEST.MF \
 +          tmp-src/org.eclipse.jdt.core/META-INF/
 +      printf 'org.eclipse.jdt.internal.compiler.tool.EclipseCompiler #Eclipse 
compiler' \
 +          > 
tmp-src/org.eclipse.jdt.core/META-INF/services/javax.tools.JavaCompiler
 +
 +      find tmp-src -name CVS | xargs -r rm -rf
diff --cc 
src/org.eclipse.jdt.core/org/eclipse/jdt/internal/compiler/ast/EqualExpression.java
index 3ffcef1,3ffcef1..e4d3c25
--- 
a/src/org.eclipse.jdt.core/org/eclipse/jdt/internal/compiler/ast/EqualExpression.java
+++ 
b/src/org.eclipse.jdt.core/org/eclipse/jdt/internal/compiler/ast/EqualExpression.java
@@@ -811,7 -811,7 +811,8 @@@ public class EqualExpression extends Bi
  
                        // check whether comparing identical expressions
                        Binding leftDirect = 
Expression.getDirectBinding(this.left);
--                      if (leftDirect != null && leftDirect == 
Expression.getDirectBinding(this.right)) {
++                      if (leftDirect != null && leftDirect == 
Expression.getDirectBinding(this.right)
++                                      && !(this.right instanceof Assignment)) 
{
                                
scope.problemReporter().comparingIdenticalExpressions(this);
                        }
                        return this.resolvedType = TypeBinding.BOOLEAN;
@@@ -848,7 -848,7 +849,9 @@@
                        // check whether comparing identical expressions
                        Binding leftDirect = 
Expression.getDirectBinding(this.left);
                        if (leftDirect != null && leftDirect == 
Expression.getDirectBinding(this.right)) {
--                              
scope.problemReporter().comparingIdenticalExpressions(this);
++                              if (!(this.right instanceof Assignment)) {
++                                      
scope.problemReporter().comparingIdenticalExpressions(this);
++                              }
                        }
                        return this.resolvedType = TypeBinding.BOOLEAN;
                }
diff --cc 
src/org.eclipse.jdt.core/org/eclipse/jdt/internal/compiler/batch/GCCMain.java
index 971839a,0000000..2bba4b0
mode 100644,000000..100644
--- 
a/src/org.eclipse.jdt.core/org/eclipse/jdt/internal/compiler/batch/GCCMain.java
+++ 
b/src/org.eclipse.jdt.core/org/eclipse/jdt/internal/compiler/batch/GCCMain.java
@@@ -1,480 -1,0 +1,501 @@@
 +/**
 + * 
 + */
 +package org.eclipse.jdt.internal.compiler.batch;
 +
 +import java.io.BufferedOutputStream;
 +import java.io.BufferedReader;
 +import java.io.ByteArrayInputStream;
 +import java.io.File;
 +import java.io.FileOutputStream;
 +import java.io.FileReader;
 +import java.io.IOException;
 +import java.io.InputStreamReader;
 +import java.io.OutputStream;
 +import java.io.PrintWriter;
 +import java.io.UnsupportedEncodingException;
 +import java.util.ArrayList;
 +import java.util.HashSet;
 +import java.util.Iterator;
 +import java.util.Map;
 +import java.util.StringTokenizer;
 +import java.util.zip.CRC32;
 +import java.util.zip.ZipEntry;
 +import java.util.zip.ZipOutputStream;
 +
 +import org.eclipse.jdt.internal.compiler.ClassFile;
 +import org.eclipse.jdt.internal.compiler.CompilationResult;
 +import org.eclipse.jdt.internal.compiler.env.AccessRestriction;
 +import org.eclipse.jdt.internal.compiler.env.AccessRule;
 +import org.eclipse.jdt.internal.compiler.env.AccessRuleSet;
 +import org.eclipse.jdt.internal.compiler.impl.CompilerOptions;
 +import org.eclipse.jdt.internal.compiler.util.Messages;
 +import org.eclipse.jdt.internal.compiler.util.SuffixConstants;
 +
 +/**
 + * This is an alternate entry point for the command-line compiler which
 + * is simpler to integrate into GCC.  In particular the option processing
 + * is more GNU-like and the recognized options are similar to those supported
 + * by other GCC front ends.
 + */
 +public class GCCMain extends Main {
 +
 +      // All the compilation units specified on the command line.
 +      private HashSet commandLineCompilationUnits = new HashSet();
 +      // True if we are only checking syntax.
 +      private boolean syntaxOnly;
 +      // If not null, the name of the output zip file.
 +      // If null, we are generating class files in the file system,
 +      // not a zip file.
 +      private String zipDestination;
 +      // The zip stream to which we're writing, or null if it hasn't been 
opened.
 +      private ZipOutputStream zipStream;
 +      
 +      // If not null, the name of the zip file to which dependency class files
 +      // should be written.
 +      private String zipDependencyDestination;
 +      // The zip stream to which dependency files should be written.
 +      private ZipOutputStream zipDependencyStream;
 +
 +      public GCCMain(PrintWriter outWriter, PrintWriter errWriter,
 +                      boolean systemExitWhenFinished) {
 +              super(outWriter, errWriter, systemExitWhenFinished);
 +              this.logger.setEmacs();
 +      }
 +
 +      public GCCMain(PrintWriter outWriter, PrintWriter errWriter,
 +                      boolean systemExitWhenFinished, Map 
customDefaultOptions) {
 +              super(outWriter, errWriter, systemExitWhenFinished,
 +                              customDefaultOptions);
 +              this.logger.setEmacs();
 +      }
 +
 +      private void fail(Exception t) {
++              t.printStackTrace();
 +              this.logger.logException(t);
 +              System.exit(1);
 +      }
 +
 +      public CompilationUnit[] getCompilationUnits() {
 +              CompilationUnit[] units = super.getCompilationUnits();
 +              for (int i = 0; i < units.length; ++i)
 +                      this.commandLineCompilationUnits.add(units[i]);
 +              return units;
 +      }
 +
 +      private String combine(char[] one, char[] two) {
 +              StringBuffer b = new StringBuffer();
 +              b.append(one);
 +              b.append(two);
 +              return b.toString();
 +      }
 +
 +      private ZipOutputStream getZipOutput() throws IOException {
 +              if (this.zipDestination != null && this.zipStream == null) {
 +                      OutputStream os;
 +                      if ("-".equals(this.zipDestination)) { //$NON-NLS-1$
 +                              os = System.out;
 +                      } else {
 +                              os = new FileOutputStream(this.zipDestination);
 +                      }
 +                      zipStream = new ZipOutputStream(new 
BufferedOutputStream(os));
 +                      zipStream.setMethod(ZipOutputStream.STORED);
++                      // Sun/OpenJDK require at least one entry in the zip 
file.
++                      ZipEntry entry = new ZipEntry(".dummy");
++                      byte[] contents = new byte[0];
++                      CRC32 crc = new CRC32();
++                      crc.update(contents);
++                      entry.setSize(contents.length);
++                      entry.setCrc(crc.getValue());
++                      zipStream.putNextEntry(entry);
++                      zipStream.write(contents);
++                      zipStream.closeEntry();
 +              }
 +              return zipStream;
 +      }
 +
 +      private ZipOutputStream getDependencyOutput() throws IOException {
 +              if (this.zipDependencyDestination != null && 
this.zipDependencyStream == null) {
 +                      OutputStream os = new 
FileOutputStream(zipDependencyDestination);
 +                      zipDependencyStream = new ZipOutputStream(new 
BufferedOutputStream(os));
 +                      zipDependencyStream.setMethod(ZipOutputStream.STORED);
++                      // Sun/OpenJDK require at least one entry in the zip 
file.
++                      ZipEntry entry = new ZipEntry(".dummy");
++                      byte[] contents = new byte[0];
++                      CRC32 crc = new CRC32();
++                      crc.update(contents);
++                      entry.setSize(contents.length);
++                      entry.setCrc(crc.getValue());
++                      zipDependencyStream.putNextEntry(entry);
++                      zipDependencyStream.write(contents);
++                      zipDependencyStream.closeEntry();
 +              }
 +              return zipDependencyStream;
 +      }
 +
 +      public void outputClassFiles(CompilationResult unitResult) {
 +              if (this.syntaxOnly) {
 +                      return;
 +              }
 +              if (this.zipDestination == null) {
 +                      // Nothing special to do here.
 +                      super.outputClassFiles(unitResult);
 +                      return;
 +              }
 +              if (unitResult == null || unitResult.hasErrors()) {
 +                      return;
 +              }
 +
 +              // If we are compiling with indirect dispatch, we don't need
 +              // any dependent classes.  If we are using the C++ ABI, then we
 +              // do need the dependencies in order to do proper layout.
 +              boolean gcjCompile = 
this.commandLineCompilationUnits.contains(unitResult.getCompilationUnit());
 +              if (this.zipDependencyDestination == null && !gcjCompile) {
 +                      return;
 +              }
 +
 +              try {
 +                      ZipOutputStream dest = gcjCompile ? getZipOutput() : 
getDependencyOutput();
 +                      ClassFile[] classFiles = unitResult.getClassFiles();
 +                      for (int i = 0; i < classFiles.length; ++i) {
 +                              ClassFile classFile = classFiles[i];
 +                              String filename = combine(classFile.fileName(), 
SuffixConstants.SUFFIX_class);
 +                              if (this.verbose)
 +                                      this.out.println(
 +                                                      Messages.bind(
 +                                                                      
Messages.compilation_write,
 +                                                                      new 
String[] {
 +                                                              
String.valueOf(this.exportedClassFilesCounter+1),
 +                                                              filename
 +                                                      }));
 +                              ZipEntry entry = new ZipEntry(filename);
 +                              byte[] contents = classFile.getBytes();
 +                              CRC32 crc = new CRC32();
 +                              crc.update(contents);
 +                              entry.setSize(contents.length);
 +                              entry.setCrc(crc.getValue());
 +                              dest.putNextEntry(entry);
 +                              dest.write(contents);
 +                              dest.closeEntry();
 +                      }
 +              } catch (IOException err) {
 +                      fail(err);
 +              }
 +      }
 +      
 +      private String getArgument(String option) {
 +              int index = option.indexOf('=');
 +              return option.substring(index + 1);
 +      }
 +
 +      private void addPath(ArrayList result, String currentClasspathName) {
 +              String customEncoding = null;
 +              AccessRule[] accessRules = new AccessRule[0];
 +              AccessRuleSet accessRuleSet = new AccessRuleSet(accessRules, 
AccessRestriction.COMMAND_LINE, currentClasspathName);
 +              FileSystem.Classpath currentClasspath = FileSystem
 +                              .getClasspath(currentClasspathName,
 +                                              customEncoding, accessRuleSet);
 +              if (currentClasspath != null) {
 +                      result.add(currentClasspath);
 +              }
 +      }
 +      
 +      private void parsePath(ArrayList result, String path) {
 +              StringTokenizer iter = new StringTokenizer(path, 
File.pathSeparator);
 +              while (iter.hasMoreTokens()) {
 +                      addPath(result, iter.nextToken());
 +              }
 +      }
 +
 +      protected void handleWarningToken(String token, boolean isEnabling) {
 +              // Recognize this for compatibility with older versions of gcj.
 +              if ("deprecated".equals(token)) //$NON-NLS-1$
 +                      token = "deprecation"; //$NON-NLS-1$
 +              else if ("static-access".equals(token)   //$NON-NLS-1$
 +                              || "dep-ann".equals(token) //$NON-NLS-1$
 +                              || "over-ann".equals(token)) { //$NON-NLS-1$
 +                      // Some exceptions to the warning naming rule.
 +              } else if ("extraneous-semicolon".equals(token)) { //$NON-NLS-1$
 +                      // Compatibility with earlier versions of gcj.
 +                      token = "semicolon"; //$NON-NLS-1$
 +              } else {
 +                      // Turn "foo-bar-baz" into eclipse-style "fooBarBaz".
 +                      StringBuffer newToken = new 
StringBuffer(token.length());
 +                      StringTokenizer t = new StringTokenizer(token, "-"); 
//$NON-NLS-1$
 +                      boolean first = true;
 +                      while (t.hasMoreTokens()) {
 +                              String next = t.nextToken();
 +                              if (first) {
 +                                      newToken.append(next);
 +                                      first = false;
 +                              } else {
 +                                      
newToken.append(Character.toUpperCase(next.charAt(0)));
 +                                      newToken.append(next.substring(1));
 +                              }
 +                      }
 +                      token = newToken.toString();
 +              }
 +              super.handleWarningToken(token, isEnabling);
 +      }
 +
 +      private void turnWarningsToErrors() {
 +              Object[] entries = this.options.entrySet().toArray();
 +              for (int i = 0, max = entries.length; i < max; i++) {
 +                      Map.Entry entry = (Map.Entry) entries[i];
 +                      if (!(entry.getKey() instanceof String))
 +                              continue;
 +                      if (!(entry.getValue() instanceof String))
 +                              continue;
 +                      if (((String) 
entry.getValue()).equals(CompilerOptions.WARNING)) {
 +                              this.options.put(entry.getKey(), 
CompilerOptions.ERROR);
 +                      }
 +              }
 +      }
 +
 +      /**
 +       * Set the debug level to the indicated value.  The level should be
 +       * between 0 and 2, inclusive, but this is not checked.
 +       * @param level the debug level
 +       */
 +      private void setDebugLevel(int level) {
 +              this.options.put(
 +                              CompilerOptions.OPTION_LocalVariableAttribute,
 +                              level > 1 ? CompilerOptions.GENERATE : 
CompilerOptions.DO_NOT_GENERATE);
 +              this.options.put(
 +                              CompilerOptions.OPTION_LineNumberAttribute,
 +                              level > 0 ? CompilerOptions.GENERATE : 
CompilerOptions.DO_NOT_GENERATE);
 +              this.options.put(
 +                              CompilerOptions.OPTION_SourceFileAttribute,
 +                              CompilerOptions.GENERATE);
 +      }
 +
 +      private void readFileList(String file, ArrayList result) {
 +              try {
 +                      BufferedReader b = new BufferedReader(new 
FileReader(file));
 +                      String line;
 +                      while ((line = b.readLine()) != null) {
 +                              if (line.endsWith(SUFFIX_STRING_java))
 +                                      result.add(line);
 +                      }
 +                      b.close();
 +              } catch (IOException err) {
 +                      fail(err);
 +              }
 +      }
 +      
 +      private void readAllFileListFiles(ArrayList fileList, ArrayList result) 
{
 +              Iterator it = fileList.iterator();
 +              while (it.hasNext()) {
 +                      readFileList((String) it.next(), result);
 +              }
 +      }
 +
 +      private void handleWall(boolean enable) {
 +              // A somewhat arbitrary list.  We use the GCC names
 +              // here, and the local handleWarningToken translates
 +              // for us.
 +              handleWarningToken("constructor-name", enable);
 +              handleWarningToken("pkg-default-method", enable);
 +              handleWarningToken("masked-catch-block", enable);
 +              handleWarningToken("all-deprecation", enable);
 +              handleWarningToken("unused-local", enable);
 +              handleWarningToken("unused-label", enable);
 +              handleWarningToken("static-receiver", enable);
 +              handleWarningToken("indirect-static", enable);
 +              handleWarningToken("no-effect-assign", enable);
 +              handleWarningToken("char-concat", enable);
 +              handleWarningToken("useless-type-check", enable);
 +              handleWarningToken("final-bound", enable);
 +              handleWarningToken("assert-identifier", enable);
 +              handleWarningToken("enum-identifier", enable);
 +              handleWarningToken("finally", enable);
 +              handleWarningToken("varargs-cast", enable);
 +              handleWarningToken("unused", enable);
 +              handleWarningToken("forbidden", enable);
 +      }
 +
 +      public void configure(String[] argv) {
 +              if ((argv == null) || (argv.length == 0)) {
 +                      // This is a "can't happen".
 +                      System.exit(1);
 +              }
 +
 +              ArrayList files = new ArrayList();
 +              ArrayList otherFiles = new ArrayList();
 +              String classpath = null;
 +              boolean haveFileList = false;
 +              boolean inhibitAllWarnings = false;
 +              boolean treatWarningsAsErrors = false;
 +
 +              for (int i = 0; i < argv.length; ++i) {
 +                      String currentArg = argv[i];
 +                      
 +                      if (currentArg.startsWith("-fencoding=")) { 
//$NON-NLS-1$
 +                              // Simply accept the last one.
 +                              String encoding = getArgument(currentArg);
 +                              try { // ensure encoding is supported
 +                                      new InputStreamReader(new 
ByteArrayInputStream(new byte[0]), encoding);
 +                              } catch (UnsupportedEncodingException e) {
 +                                      throw new IllegalArgumentException(
 +                                              
this.bind("configure.unsupportedEncoding", encoding)); //$NON-NLS-1$
 +                              }
 +                              
this.options.put(CompilerOptions.OPTION_Encoding, encoding);
 +                      } else if 
(currentArg.startsWith("-foutput-class-dir=")) { //$NON-NLS-1$
 +                              String arg = getArgument(currentArg);
 +                              if (this.destinationPath != null) {
 +                                      StringBuffer errorMessage = new 
StringBuffer();
 +                                      errorMessage.append("-d"); //$NON-NLS-1$
 +                                      errorMessage.append(' ');
 +                                      errorMessage.append(arg);
 +                                      throw new IllegalArgumentException(
 +                                              
this.bind("configure.duplicateOutputPath", errorMessage.toString())); 
//$NON-NLS-1$
 +                              }
 +                              this.setDestinationPath(arg);
 +                      } else if (currentArg.startsWith("-fbootclasspath=")) { 
//$NON-NLS-1$
 +                              classpath = getArgument(currentArg);
 +                      } else if (currentArg.equals("-fzip-target")) { 
//$NON-NLS-1$
 +                              ++i;
 +                              if (i >= argv.length)
 +                                      throw new 
IllegalArgumentException(this.bind("gcc.zipArg")); //$NON-NLS-1$
 +                              this.zipDestination = argv[i];
 +                      } else if (currentArg.equals("-fzip-dependency")) { 
//$NON-NLS-1$
 +                              ++i;
 +                              if (i >= argv.length)
 +                                      throw new 
IllegalArgumentException(this.bind("gcc.zipDepArg")); //$NON-NLS-1$
 +                              this.zipDependencyDestination = argv[i];
 +                      } else if (currentArg.startsWith("-g")) { //$NON-NLS-1$
 +                              if (currentArg.equals("-g0")) { //$NON-NLS-1$
 +                                      setDebugLevel(0);
 +                              } else if (currentArg.equals("-g2") || 
currentArg.equals("-g3") //$NON-NLS-1$ //$NON-NLS-2$
 +                                              || currentArg.equals("-g")) { 
//$NON-NLS-1$
 +                                      setDebugLevel(2);
 +                              } else {
 +                                      // Handle -g1 but also things like 
-gstabs.
 +                                      setDebugLevel(1);
 +                              }
 +                      } else if (currentArg.equals("-Werror")) { //$NON-NLS-1$
 +                              treatWarningsAsErrors = true;
 +                      } else if (currentArg.equals("-Wno-error")) { 
//$NON-NLS-1$
 +                              treatWarningsAsErrors = false;
 +                      } else if (currentArg.equals("-Wall")) { //$NON-NLS-1$
 +                              handleWall(true);
 +                      } else if (currentArg.equals("-Wno-all")) { 
//$NON-NLS-1$
 +                              handleWall(false);
 +                      } else if (currentArg.startsWith("-Wno-")) { 
//$NON-NLS-1$
 +                              handleWarningToken(currentArg.substring(5), 
false);
 +                      } else if (currentArg.startsWith("-W")) { //$NON-NLS-1$
 +                              handleWarningToken(currentArg.substring(2), 
true);
 +                      } else if (currentArg.equals("-w")) { //$NON-NLS-1$
 +                              inhibitAllWarnings = true;
 +                      } else if (currentArg.startsWith("-O")) { //$NON-NLS-1$
 +                              // Ignore.
 +                      } else if (currentArg.equals("-v")) { //$NON-NLS-1$
 +                              this.verbose = true;
 +                      } else if (currentArg.equals("-fsyntax-only")) { 
//$NON-NLS-1$
 +                              this.syntaxOnly = true;
 +                      } else if (currentArg.startsWith("-fsource=")) { 
//$NON-NLS-1$
 +                              currentArg = getArgument(currentArg);
 +                              if (currentArg.equals("1.3")) { //$NON-NLS-1$
 +                                      
this.options.put(CompilerOptions.OPTION_Source, CompilerOptions.VERSION_1_3);
 +                              } else if (currentArg.equals("1.4")) { 
//$NON-NLS-1$
 +                                      
this.options.put(CompilerOptions.OPTION_Source, CompilerOptions.VERSION_1_4);
 +                              } else if (currentArg.equals("1.5") || 
currentArg.equals("5") || currentArg.equals("5.0")) { 
//$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$
 +                                      
this.options.put(CompilerOptions.OPTION_Source, CompilerOptions.VERSION_1_5);
 +                              } else if (currentArg.equals("1.6") || 
currentArg.equals("6") || currentArg.equals("6.0")) { 
//$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$
 +                                      
this.options.put(CompilerOptions.OPTION_Source, CompilerOptions.VERSION_1_6);
 +                              } else {
 +                                      throw new 
IllegalArgumentException(this.bind("configure.source", currentArg)); 
//$NON-NLS-1$
 +                              }
 +                      } else if (currentArg.startsWith("-ftarget=")) { 
//$NON-NLS-1$
 +                              currentArg = getArgument(currentArg);
 +                              if (currentArg.equals("1.1")) { //$NON-NLS-1$
 +                                      
this.options.put(CompilerOptions.OPTION_TargetPlatform, 
CompilerOptions.VERSION_1_1);
 +                              } else if (currentArg.equals("1.2")) { 
//$NON-NLS-1$
 +                                      
this.options.put(CompilerOptions.OPTION_TargetPlatform, 
CompilerOptions.VERSION_1_2);
 +                              } else if (currentArg.equals("1.3")) { 
//$NON-NLS-1$
 +                                      
this.options.put(CompilerOptions.OPTION_TargetPlatform, 
CompilerOptions.VERSION_1_3);
 +                              } else if (currentArg.equals("1.4")) { 
//$NON-NLS-1$
 +                                      
this.options.put(CompilerOptions.OPTION_TargetPlatform, 
CompilerOptions.VERSION_1_4);
 +                              } else if (currentArg.equals("1.5") || 
currentArg.equals("5") || currentArg.equals("5.0")) { 
//$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$
 +                                      
this.options.put(CompilerOptions.OPTION_TargetPlatform, 
CompilerOptions.VERSION_1_5);
 +                              } else if (currentArg.equals("1.6") || 
currentArg.equals("6") || currentArg.equals("6.0")) { 
//$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$
 +                                      
this.options.put(CompilerOptions.OPTION_TargetPlatform, 
CompilerOptions.VERSION_1_6);
 +                              } else if (currentArg.equals("jsr14")) { 
//$NON-NLS-1$
 +                                      
this.options.put(CompilerOptions.OPTION_TargetPlatform, 
CompilerOptions.VERSION_JSR14);
 +                              } else {
 +                                      throw new 
IllegalArgumentException(this.bind("configure.targetJDK", currentArg)); 
//$NON-NLS-1$
 +                              }
 +                      } else if (currentArg.equals("-ffilelist-file")) { 
//$NON-NLS-1$
 +                              haveFileList = true;
 +                      } else if 
(currentArg.endsWith(SuffixConstants.SUFFIX_STRING_java)) {
 +                              files.add(currentArg);
 +                      } else if (currentArg.charAt(0) == '-'){
 +                              // FIXME: error if not a file?
 +                      } else {
 +                              otherFiles.add(currentArg);
 +                      }
 +              }
 +
 +              // Read the file list file.  We read them all, but really there
 +              // will only be one.
 +              if (haveFileList)
 +                      readAllFileListFiles(otherFiles, files);
 +
 +              this.filenames = (String[]) files.toArray(new String[0]);
 +              this.encodings = new String[this.filenames.length];
 +              this.destinationPaths = new String[this.filenames.length];
 +              for (int i = 0; i < this.filenames.length; ++i)
 +                      this.destinationPaths[i] = this.destinationPath;
 +              
 +              // Classpath processing.
 +              ArrayList result = new ArrayList();
 +              if (classpath == null)
 +                      throw new 
IllegalArgumentException(this.bind("gcc.noClasspath")); //$NON-NLS-1$
 +              parsePath(result, classpath);
 +
 +              // We must always create both output files, even if one is not 
used.
 +              // That way we will always pass valid zip file on to jc1.
 +              try {
 +                      getZipOutput();
 +                      getDependencyOutput();
 +              } catch (IOException err) {
 +                      fail(err);
 +              }
 +
 +              if (inhibitAllWarnings)
 +                      disableWarnings();
 +              if (treatWarningsAsErrors)
 +                      turnWarningsToErrors();
 +
 +              this.checkedClasspaths = new 
FileSystem.Classpath[result.size()];
 +              result.toArray(this.checkedClasspaths);
 +
 +              this.logger.logCommandLineArguments(argv);
 +              this.logger.logOptions(this.options);
 +              this.logger.logClasspath(this.checkedClasspaths);
 +
 +              this.maxRepetition = 1;
 +      }
 +
 +      public boolean compile(String[] argv) {
 +              boolean result = super.compile(argv);
 +              try {
 +                      if (zipStream != null) {
 +                              zipStream.finish();
 +                              zipStream.close();
 +                      }
 +                      if (zipDependencyStream != null) {
 +                              zipDependencyStream.finish();
 +                              zipDependencyStream.close();
 +                      }
 +              } catch (IOException err) {
 +                      fail(err);
 +              }
 +              return result;
 +      }
 +
 +      public static void main(String[] argv) {
 +              boolean result = new GCCMain(new PrintWriter(System.out), new 
PrintWriter(System.err), false).compile(argv);
 +              System.exit(result ? 0 : 1);
 +      }
 +}
diff --cc 
src/org.eclipse.jdt.core/org/eclipse/jdt/internal/compiler/lookup/BinaryTypeBinding.java
index 64a216f,b823ebb..e6bda1d
--- 
a/src/org.eclipse.jdt.core/org/eclipse/jdt/internal/compiler/lookup/BinaryTypeBinding.java
+++ 
b/src/org.eclipse.jdt.core/org/eclipse/jdt/internal/compiler/lookup/BinaryTypeBinding.java
@@@ -325,6 -325,6 +325,21 @@@ void cachePartsFrom(IBinaryType binaryT
                if (needFieldsAndMethods) {
                        createFields(binaryType.getFields(), sourceLevel, 
missingTypeNames);
                        createMethods(binaryType.getMethods(), sourceLevel, 
missingTypeNames);
++                      boolean isViewedAsDeprecated = isViewedAsDeprecated();
++                      if (isViewedAsDeprecated) {
++                              for (int i = 0, max = this.fields.length; i < 
max; i++) {
++                                      FieldBinding field = this.fields[i];
++                                      if (!field.isDeprecated()) {
++                                              field.modifiers |= 
ExtraCompilerModifiers.AccDeprecatedImplicitly;
++                                      }
++                              }
++                              for (int i = 0, max = this.methods.length; i < 
max; i++) {
++                                      MethodBinding method = this.methods[i];
++                                      if (!method.isDeprecated()) {
++                                              method.modifiers |= 
ExtraCompilerModifiers.AccDeprecatedImplicitly;
++                                      }
++                              }
++                      }
                }
                if (this.environment.globalOptions.storeAnnotations)
                        
setAnnotations(createAnnotations(binaryType.getAnnotations(), this.environment, 
missingTypeNames));
@@@ -344,7 -344,7 +359,6 @@@ private void createFields(IBinaryField[
                if (size > 0) {
                        this.fields = new FieldBinding[size];
                        boolean use15specifics = sourceLevel >= 
ClassFileConstants.JDK1_5;
--                      boolean isViewedAsDeprecated = isViewedAsDeprecated();
                        boolean hasRestrictedAccess = hasRestrictedAccess();
                        int firstAnnotatedFieldIndex = -1;
                        for (int i = 0; i < size; i++) {
@@@ -368,8 -368,8 +382,6 @@@
                                field.id = i; // ordinal
                                if (use15specifics)
                                        field.tagBits |= 
binaryField.getTagBits();
--                              if (isViewedAsDeprecated && 
!field.isDeprecated())
--                                      field.modifiers |= 
ExtraCompilerModifiers.AccDeprecatedImplicitly;
                                if (hasRestrictedAccess)
                                        field.modifiers |= 
ExtraCompilerModifiers.AccRestrictedAccess;
                                if (fieldSignature != null)
@@@ -559,14 -569,14 +581,11 @@@ private void createMethods(IBinaryMetho
                return;
        }
  
--      boolean isViewedAsDeprecated = isViewedAsDeprecated();
        boolean hasRestrictedAccess = hasRestrictedAccess();
        this.methods = new MethodBinding[total];
        if (total == initialTotal) {
                for (int i = 0; i < initialTotal; i++) {
                        MethodBinding method = createMethod(iMethods[i], 
sourceLevel, missingTypeNames);
--                      if (isViewedAsDeprecated && !method.isDeprecated())
--                              method.modifiers |= 
ExtraCompilerModifiers.AccDeprecatedImplicitly;
                        if (hasRestrictedAccess)
                                method.modifiers |= 
ExtraCompilerModifiers.AccRestrictedAccess;
                        this.methods[i] = method;
@@@ -575,8 -585,8 +594,6 @@@
                for (int i = 0, index = 0; i < initialTotal; i++) {
                        if (iClinit != i && (toSkip == null || toSkip[i] != 
-1)) {
                                MethodBinding method = 
createMethod(iMethods[i], sourceLevel, missingTypeNames);
--                              if (isViewedAsDeprecated && 
!method.isDeprecated())
--                                      method.modifiers |= 
ExtraCompilerModifiers.AccDeprecatedImplicitly;
                                if (hasRestrictedAccess)
                                        method.modifiers |= 
ExtraCompilerModifiers.AccRestrictedAccess;
                                this.methods[index++] = method;
diff --cc 
src/org.eclipse.jdt.core/org/eclipse/jdt/internal/compiler/lookup/Scope.java
index 32a7dca,dd4183b..58cf823
--- 
a/src/org.eclipse.jdt.core/org/eclipse/jdt/internal/compiler/lookup/Scope.java
+++ 
b/src/org.eclipse.jdt.core/org/eclipse/jdt/internal/compiler/lookup/Scope.java
@@@ -3591,12 -3593,12 +3593,21 @@@ public abstract class Scope 
        }
  
        // caveat: this is not a direct implementation of JLS
--      protected final MethodBinding mostSpecificMethodBinding(MethodBinding[] 
visible, int visibleSize, TypeBinding[] argumentTypes, InvocationSite 
invocationSite, ReferenceBinding receiverType) {
++      protected final MethodBinding mostSpecificMethodBinding(MethodBinding[] 
visible, int visibleSize, TypeBinding[] argumentTypes, final InvocationSite 
invocationSite, ReferenceBinding receiverType) {
                int[] compatibilityLevels = new int[visibleSize];
                for (int i = 0; i < visibleSize; i++)
                        compatibilityLevels[i] = 
parameterCompatibilityLevel(visible[i], argumentTypes);
  
--              boolean useTiebreakMethod = 
invocationSite.genericTypeArguments() == null;
++              InvocationSite tieBreakInvocationSite = new InvocationSite() {
++                      public TypeBinding[] genericTypeArguments() { return 
null; } // ignore genericTypeArgs
++                      public boolean isSuperAccess() { return 
invocationSite.isSuperAccess(); }
++                      public boolean isTypeAccess() { return 
invocationSite.isTypeAccess(); }
++                      public void setActualReceiverType(ReferenceBinding 
actualReceiverType) { /* ignore */}
++                      public void setDepth(int depth) { /* ignore */}
++                      public void setFieldIndex(int depth) { /* ignore */}
++                      public int sourceStart() { return 
invocationSite.sourceStart(); }
++                      public int sourceEnd() { return 
invocationSite.sourceStart(); }
++              };
                MethodBinding[] moreSpecific = new MethodBinding[visibleSize];
                int count = 0;
                for (int level = 0, max = VARARGS_COMPATIBLE; level <= max; 
level++) {
@@@ -3605,7 -3607,7 +3616,7 @@@
                                max = level; // do not examine further 
categories, will either return mostSpecific or report ambiguous case
                                MethodBinding current = visible[i];
                                MethodBinding original = current.original();
--                              MethodBinding tiebreakMethod = 
useTiebreakMethod ? current.tiebreakMethod() : current;
++                              MethodBinding tiebreakMethod = 
current.tiebreakMethod();
                                for (int j = 0; j < visibleSize; j++) {
                                        if (i == j || compatibilityLevels[j] != 
level) continue;
                                        MethodBinding next = visible[j];
@@@ -3624,7 -3626,7 +3635,7 @@@
                                                        methodToTest = 
pNext.originalMethod;
                                                }
                                        }
--                                      MethodBinding acceptable = 
computeCompatibleMethod(methodToTest, tiebreakMethod.parameters, 
invocationSite);
++                                      MethodBinding acceptable = 
computeCompatibleMethod(methodToTest, tiebreakMethod.parameters, 
tieBreakInvocationSite);
                                        /* There are 4 choices to consider with 
current & next :
                                         foo(B) & foo(A) where B extends A
                                         1. the 2 methods are equal (both 
accept each others parameters) -> want to continue

-- 
Alioth's /usr/local/bin/git-commit-notice on 
/srv/git.debian.org/git/pkg-java/ecj.git

_______________________________________________
pkg-java-commits mailing list
[email protected]
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-java-commits

Reply via email to