Skip to content

Upgrade Spoon from 10.4.2 to 11.5.0 - #363

Merged
CatarinaGamboa merged 1 commit into
fix/compliance-levelfrom
chore/spoon-11
Oct 7, 2026
Merged

CatarinaGamboa merged 1 commit into
fix/compliance-levelfrom
chore/spoon-11

Conversation

@CatarinaGamboa

@CatarinaGamboa CatarinaGamboa commented Oct 7, 2026 •

Copy link
Copy Markdown
Collaborator

Follow-up to #352 (stacked on it; GitHub will retarget to main once #352 merges).

Problem

Spoon 10.4.2 bundles JDT 3.33, which only accepts compliance levels up to 19 (20 throws Unrecognized option : -20), so #352 has to cap the level read from the project's pom at 19.

Change

  • version.spoon: 10.4.2 → 11.5.0 (JDT 3.46). It needs a Java 17+ runtime (class files are Java 17), which is fine since the verifier already targets 20.
  • ComplianceLevel.MAX_SUPPORTED (and so the default when no pom declares a version): 19 → 26, the highest level JDT 3.46 accepts (27 throws).

No source changes were needed for the Spoon API.

Downstream

vscode-liquidjava/server/pom.xml declares spoon-core directly with version.spoon = 10.4.2. That direct dependency overrides the verifier's transitive one, so the server should be bumped to 11.5.0 together with the verifier version that includes this change. Otherwise projects declaring Java 20+ would make the model builder throw there.

Testing

mvn test: 369/369 pass (same as #352).

🤖 Generated with Claude Code

@CatarinaGamboa CatarinaGamboa added the dependencies Pull requests that update a dependency file label Oct 7, 2026
Spoon 11.5.0 bundles JDT 3.46, which accepts compliance levels up to 26
(10.4.2's JDT 3.33 stopped at 19), so raise ComplianceLevel.MAX_SUPPORTED
accordingly. No API changes were needed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
CatarinaGamboa added a commit that referenced this pull request Oct 7, 2026
## Problem
`CommandLineLauncher` sets Spoon's compliance level to 8, so any Java 9+
syntax fails to compile and LiquidJava verifies a broken model with only
a generic warning ("Java compilation encountered issues"). E.g. `var n =
5;` is read as a variable of class `testSuite.var` (`Sorts testSuite.var
and Int are incompatible`), and `try (r)` (Java 9 resource reference)
does not parse, which blocks the second reproducer of #334.

## Change
- New `ComplianceLevel` reads the level from the
`maven.compiler.release` (or `maven.compiler.source`) property of the
nearest `pom.xml` of each verified path, walking up to enclosing poms,
using the existing `maven-model` dependency. `1.8` is read as `8`; with
several paths the highest level wins.
- Defaults to **19** when no pom declares it, and caps at **19**: the
highest level Spoon 10.4.2's JDT (3.33) accepts (`20` throws
`Unrecognized option : -20`). The cap is silent (the level is printed
with `--debug`), since e.g. `liquidjava-example` declares 20 and a
warning would show up on every run.
- New test `CorrectModernJavaSyntax` (`var`, `try (r)`, switch
expression): fails at level 8, passes now.
- Unit tests `TestComplianceLevel` (reads the pom, caps).

Not read (falls back to 19): the compiler plugin's
`<release>`/`<source>` config, parents outside the enclosing
directories, Gradle builds. Upgrading to Spoon 11.5 (levels up to 26) is
in #363.

## Testing
`mvn test`: 369/369 pass.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
@CatarinaGamboa
CatarinaGamboa merged commit c81519c into fix/compliance-level Oct 7, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants