Skip to content

fix(#481): subtype relation for refined type members#581

Closed
zamadye wants to merge 1 commit intozio:developfrom
zamadye:develop
Closed

fix(#481): subtype relation for refined type members#581
zamadye wants to merge 1 commit intozio:developfrom
zamadye:develop

Conversation

@zamadye
Copy link
Copy Markdown

@zamadye zamadye commented Mar 31, 2026

/claim #481\n\nFix #481 - When comparing type members in refined types (e.g., { type T = Int }), the comparison logic was checking for exact equality (ln == rn && lref == rref) instead of checking subtype relation.\n\nThe fix changes the condition to check subtype relation (ctx.isChild(lref, rref)) which is the correct semantics.\n\nThis resolves the issue where Tag[AInt].tag <:< Tag[A { type T = Int }].tag returns false when it should return true.

Fix zio#481 - When comparing type members in refined types,
the comparison was incorrectly checking for exact equality (lref == rref)
instead of checking subtype relation (ctx.isChild).

The fix changes the compareDecl function in LightTypeTagInheritance.scala
to check subtype relation (ctx.isChild(lref, rref)) which is the
correct semantics for comparing type members.

Example:

The fix resolves the issue where this was returning false.

/claim zio#481
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants