manifold-systems / manifold

Manifold is a Java compiler plugin, its features include Metaprogramming, Properties, Extension Methods, Operator Overloading, Templates, a Preprocessor, and more.
http://manifold.systems/
Apache License 2.0
2.27k stars 122 forks source link

Manifold properties combined with Lombok @RequiredArgsConstructor #598

Open EotT123 opened 1 month ago

EotT123 commented 1 month ago

Lombok's RequiredArgsConstructor is a convenient tool for generating constructors without the need to manually write boilerplate code. However, this functionality encounters issues when used with Manifold properties. Fields annotated with @val are treated as final by the compiler, but Lombok does not recognize them as such. I'm not sure if anything can be done about this, or if changes to Lombok's codebase are required to resolve this incompatibility?

rsmckinney commented 1 month ago

It suspect it's a chicken/egg problem that can't be rectified, but I'll take a deeper look.

On the brighter side @data classes are next in the lineup, which will similarly support a required arguments constructor etc.

EotT123 commented 1 month ago

I'm looking forward to it! Is there already some information available about the (possible) features?

rsmckinney commented 2 weeks ago

See https://github.com/manifold-systems/manifold/issues/257