Skip to content

fix(optics): resolve name shadowing when property is named 'arrow' (#3789)#3845

Merged
serras merged 1 commit intoarrow-kt:mainfrom
sjoongh:fix/optics-arrow-name-collision
Jan 17, 2026
Merged

fix(optics): resolve name shadowing when property is named 'arrow' (#3789)#3845
serras merged 1 commit intoarrow-kt:mainfrom
sjoongh:fix/optics-arrow-name-collision

Conversation

@sjoongh
Copy link
Contributor

@sjoongh sjoongh commented Jan 13, 2026

Overview

This PR fixes the compilation error occurring when a data class has a property named arrow.

Problem

In the generated optics code, the compiler confuses the arrow package with the property name, leading to an Unresolved reference.

Changes

  • Introduced resolveTypeName in domain.kt to detect collisions between property names and package/type segments.
  • Automatically generates alias imports (e.g., import arrow.optics.Lens as ArrowOpticsLens) when a collision is detected.
  • Applied this logic to Lens, Optional, Prism, Traversal, and Iso.

Fixed Issue

Closes #3789

@serras serras merged commit a1700d0 into arrow-kt:main Jan 17, 2026
8 checks passed
@serras
Copy link
Member

serras commented Jan 17, 2026

Awesome, thanks for your contribution!

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Property named "arrow" causes incorrect optics generated code

2 participants