Skip to content

Fine-grained distinction of source-breaking vs. binary-breaking changes#133

Merged
tdegueul merged 11 commits intomainfrom
bc-kind-compatibility
Mar 8, 2026
Merged

Fine-grained distinction of source-breaking vs. binary-breaking changes#133
tdegueul merged 11 commits intomainfrom
bc-kind-compatibility

Conversation

@tdegueul
Copy link
Contributor

@tdegueul tdegueul commented Mar 8, 2026

This makes Roseau more accurate by separating source-breaking from binary-breaking changes where the previous BCs were too coarse.

  • Introduce proper logic for assignability and subtyping
  • Split field type changes into:
    • FIELD_TYPE_ERASURE_CHANGED for binary incompatibility
    • FIELD_TYPE_CHANGED_INCOMPATIBLE for source incompatibility
  • Split method return type changes into:
    • METHOD_RETURN_TYPE_ERASURE_CHANGED for binary incompatibility
    • METHOD_RETURN_TYPE_CHANGED_INCOMPATIBLE for source incompatibility
  • Split METHOD_NOW_STATIC into:
    • METHOD_NOW_STATIC for binary incompatibility
    • METHOD_OVERRIDABLE_NOW_STATIC for source incompatibility

@tdegueul tdegueul self-assigned this Mar 8, 2026
@tdegueul tdegueul added enhancement New feature or request core Roseau core APIs labels Mar 8, 2026
@tdegueul tdegueul merged commit a5a710d into main Mar 8, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

core Roseau core APIs enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant