GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — Read a state value against the sets of the argument's subtypes too by CatarinaGamboa · Pull Request #513 · liquid-java/liquidjava

Conversation

@CatarinaGamboa

@CatarinaGamboa CatarinaGamboa commented Nov 9, 2026

Copy link
Copy Markdown
Collaborator

Found while converting the study exercises (proposal D) to the value form from #502.

@ExternalRefinementsFor("java.awt.Window")
@StateSet(name = "display", value = {"notDisplayable", "displayable"})
interface WindowRefinements { ... }

@ExternalRefinementsFor("java.awt.Component")
interface ComponentRefinements {
    @Refinement("_ ? display(this) == displayable : display(this) == notDisplayable")
    boolean isDisplayable();
}

On main this reports Not Found Error: Variable 'displayable' could not be found at the call, while the shorthand _ ? displayable(this) : notDisplayable(this) is accepted. #510 reads the value form only against sets declared on the argument's type or its supertypes, and display is declared on Window, a subtype of Component.

A Component can be a Window, so a set now also applies when it is declared on a subtype of the argument's type (TypeChecker.isRelatedTo). Sets of unrelated classes are still ignored, so the wrong-set and unrelated-same-name cases from #510 behave as before.

Test: classes/state_value_set_of_subtype_correct (the study's Frame/Window case, with dispose requiring display(this) == displayable); it fails on main with the error above. Full suite: 726 tests pass.

🤖 Generated with Claude Code

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@CatarinaGamboa @claude
Read a state value against the sets of the argument's subtypes too
e58c52a
A spec for java.awt.Component that writes display(this) == displayable,
with display declared on its subclass Window, reported displayable as
an unknown variable, while the shorthand displayable(this) is accepted.
A Component can be a Window, so a set now applies to an argument whose
type is its class, a subtype or a supertype.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
@CatarinaGamboa

CatarinaGamboa commented Nov 9, 2026

Copy link
Copy Markdown
Collaborator Author

Codex review (round 1): No actionable defect was confirmed. The new example passes verification; diagnostics seen during a concurrent full-suite run could not be reproduced when the affected example was run independently.

Clean-code audit (clean-code-principles): nothing to change. The change is one predicate (isRelatedTo) used by both readers of the value form (specs and aliases), so the two stay in sync (core-dry); the name and javadoc say why a supertype's argument may use a subtype's set (doc-why-not-what). One fixture, failing on main (lean tests).

🤖 Generated with Claude Code

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@CatarinaGamboa
CatarinaGamboa merged commit 44e6167 into main Nov 9, 2026
1 check passed

Uh oh!

There was an error while loading. Please reload this page.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

No reviews

Uh oh!

There was an error while loading. Please reload this page.

Assignees

No one assigned

Labels

None yet

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

Uh oh!

There was an error while loading. Please reload this page.

1 participant

@CatarinaGamboa
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
You are visitor 01402520 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.