Skip to content

Latest commit

 

History

History
36 lines (24 loc) · 2.72 KB

File metadata and controls

36 lines (24 loc) · 2.72 KB

scalafix-migrate-circe-generic-extras Scala version support

Scalafix rules for circe-generic-extra migration

This project contains set of rules allowing to migrate Scala 2 macro-annotation based codecs into Scala 3 built-in derivation.

Available rules:

CirceGenericExtrasMigration

Main rule, detects usages of macro-annotations or derivation from circe-generic-extras and replaces them with the counterparts defined in circe core Scala 3 library.

Compatible with Circe 0.14.7 or later.

Can be used to migrate usages of both circe-generic-extras and circe-derivation (partially) to Scala 3.

Supported rewrites:

  • - JsonCodec macro-annotations - replaced with Codec derivation;
  • - ConfiguredJsonCodec macro-annotations - replaced with ConfiguredCodec derivation;
  • - ConfiguredJsonCodec(encodeOnly = true) / ConfiguredJsonCodec(decodeOnly = true) - rewritten into ConfiguredEncoder or ConfiguredDecoder derived instances;
  • - @JsonKey annotations - field names defined in primary constructor or as member fields are transformed into dedicated Configuraiton instance;
  • - generic.extras.semiauto:
    • - deriveCodec[T], deriveDecoder[T], deriveEncoder[T], - replaces calls to methods defined in io.circe.generic.extras.semiauto._ with their counterpart in io.circe.generic.semiauto._, does not requrie implicit Configuration. Requires io.circe::circe-generic dependency
    • - deriveConfiguredCodec[T], deriveConfiguredDecoder[T], deriveConfiguredEncoder[T] - rewritten into Codec.derived / Decoder.derivedConfigured / Encoder.derived
    • - deriveUnwrappedCodec[T], deriveUnwrappedDecoder[T], deriveUnwrappedEncoder[T] - rewritten into Codec/Decoder/Encoder constructed from value class underlying type and map/contramap operations.
    • - deriveEnumerationCodec[T], deriveEnumerationDecoder[T], deriveEnumerationEncoder[T] - not yet supported
    • - deriveFor - no replacement in Scala 3
    • - deriveExtrasCodec[T], deriveExtrasDecoder[T], deriveExtrasEncoder[T]: no replecement in Scala 3

CirceLiteralMigration

Simple rule allowing to adopt to json string interpolator changes done in Scala 3. Would rewrite imports io.circe.literal.JsonStringContext into io.circe.literal.json.

Usage

For information on how to use this projects refer to Scalafix user guide