Skip to content

Latest commit

 

History

History
307 lines (191 loc) · 14.1 KB

CHANGELOG.md

File metadata and controls

307 lines (191 loc) · 14.1 KB

Changelog

Unreleased

  • Allow word-form for newtype enum variants whose only field produces a value when from_none is called on their type #249

v0.20.8 (February 23, 2024)

  • Add #[darling(with = ...)] support to attrs magic field to allow using custom receiver types for attrs #273

v0.20.7 (February 22, 2024)

  • Add #[darling(flatten)] to allow forwarding unknown fields to another struct #146
  • Don't suggest names of skipped fields in derived impls #268

v0.20.6 (February 14, 2024)

  • Fix some missing syn invisible group handling in FromMeta impls #263
  • Fix misleading error message on Error::unexpected_type so it no longer implies the type was a literal #264
  • Impl FromMeta Vec of literals, e.g. LitStr #265

v0.20.5 (January 30, 2024)

  • Add Flag::span inherent method, as Flag can no longer impl syn::spanned::Spanned #242

v0.20.4 (January 29, 2024)

  • Accept bare paths in #[darling(default = ...)] #258
  • Add FromMeta impl for PathBuf #259
  • Improve FromMeta implementation for enums #260
    • Properly implement unit arms in FromMeta::from_list to provide a consistent API for heterogeneous enums that include a mix of unit, newtype and struct variants
    • Add #[darling(word)] attribute for unit enum variants (See #63 for details)

v0.20.3 (July 12, 2023)

  • Add FromMeta impl for u128 and i128 #243

v0.20.2 (May 25, 2023)

  • Allow darling users to omit quotation marks for paths and idents #236
  • Add new util functions for controlling how quotation marks are handled when reading into Expr fields #235

v0.20.1 (May 2, 2023)

  • Add Clone impl for NestedMeta #230

v0.20.0 (April 27, 2023)

  • Bump syn to version 2, courtesy of @jonasbb #227

Breaking Changes

  • Replace all occurrences of syn::NestedMeta with darling::ast::NestedMeta.

  • Replacement for the deprecated AttributeArgs:

// Before

parse_macro_input!(args as AttributeArgs);

// After

match NestedMeta::parse_meta_list(args) {
    Ok(v) => v,
    Err(e) => { 
      return TokenStream::from(Error::from(e).write_errors()); 
    }
};
  • In GenericParamExt, LifetimeDef is now LifetimeParam.
  • In GenericParamExt, as_lifetime_def is renamed to as_lifetime_param.
  • Flag and SpannedValue no longer implement syn::spanned::Spanned.
  • The MSRV (minimum supported Rust version) is now 1.56, because of syn.

Deprecation Warnings

In previous versions of darling, arbitrary expressions were passed in attributes by wrapping them in quotation marks. v0.20.0 preserves this behavior for syn::Expr, but as a result a field expecting a syn::Expr cannot accept a string literal - it will incorrectly attempt to parse the contents. If this is an issue for you, please add a comment to #229.

v0.14.4 (March 9, 2023)

  • Add support for child diagnostics when diagnostics feature enabled #224

v0.14.3 (February 3, 2023)

  • Re-export syn from darling to avoid requiring that consuming crates have a syn dependency.
  • Change <SpannedValue<T> as FromMeta> impl to more precisely capture the value span, as opposed to the span of the entire item.
  • Add darling::util::{AsShape, Shape, ShapeSet} to improve "shape" validation for structs and variants. #222

v0.14.2 (October 26, 2022)

  • Derived impls of FromMeta will now error on literals, rather than silently ignoring them. #193
  • Don't include property paths in compile errors when spans are available. #203

v0.14.1 (April 28, 2022)

  • Fix a bug where using a trait that accepts #[darling(attributes(...))] without specifying any attributes would emit code that did not compile. #183
  • Impl Clone for darling::Error #184
  • Impl From<darling::Error> for syn::Error #184
  • Add Error::span and Error::explicit_span methods #184

v0.14.0 (April 13, 2022)

  • BREAKING CHANGE: Remove many trait impls from util::Flag. This type had a number of deref and operator impls that made it usable as sort-of-a-boolean. Real-world usage showed this type is more useful if it's able to carry a span for good errors, and that most of those impls were unnecessary. #179
  • Remove need for #[darling(default)] on Option<T> and Flag fields #161
  • Improve validation of enum shapes #178
  • Bump proc-macro2 dependency to 1.0.37 #180
  • Bump quote dependency to 1.0.18 #180
  • Bump syn dependency to 1.0.91 #180

v0.13.4 (April 6, 2022)

  • Impl FromMeta for syn::Visibility #173

v0.13.3 (April 5, 2022)

  • Add error::Accumulator for dealing with multiple errors #164
  • Impl FromMeta for syn::Type and its variants #172

v0.13.2 (March 30, 2022)

  • Impl FromMeta for syn::ExprPath #169

v0.13.1 (December 7, 2021)

  • Add FromAttributes trait and macro #151

v0.13.0 (May 20, 2021)

  • Update darling to 2018 edition #129
  • Error on duplicate fields in #[darling(...)] attributes #130
  • Impl Copy for SpannedValue<T: Copy>
  • Add SpannedValue::map_ref

v0.13.0-beta (April 20, 2021)

  • Update darling to 2018 edition #129
  • Error on duplicate fields in #[darling(...)] attributes #130

v0.12.4 (April 20, 2021)

  • Add and_then to derive macros for darling

v0.12.3 (April 8, 2021)

  • Fix FromMeta impl for char not to panic #126

v0.12.2 (February 23, 2021)

  • Impl FromMeta for HashMap<Ident, V> and HashMap<Path, V>

v0.12.1 (February 22, 2021)

  • Impl FromMeta for syn::ExprArray #122
  • Remove use of unreachable from darling::ast::Data #123
  • Add darling::ast::Data::try_empty_from to avoid panics when trying to read a union body #123

v0.12.0 (January 5, 2021)

  • POSSIBLY BREAKING: Derived impls of FromDeriveInput, FromField, FromVariant, and FromTypeParam will now error when encountering an attribute darling has been asked to parse that isn't a supported shape. Any crates using darling that relied on those attributes being silently ignored could see new errors reported in their dependent crates. #113
  • Impl syn::spanned::Spanned for darling::util::SpannedValue #113
  • Add darling::util::parse_attribute_to_meta_list to provide useful errors during attribute parsing #113
  • Add impl From<syn::Error> for Error to losslessly propagate syn errors #116

v0.11.0 (December 14, 2020)

  • Bump minor version due to unexpected breaking change #107

v0.10.3 (December 10, 2020)

  • Add discriminant magic field when deriving FromVariant #105

v0.10.2 (October 30, 2019)

  • Bump syn dependency to 1.0.1 #83

v0.10.1 (September 25, 2019)

  • Fix test compilation errors #81

v0.10.0 (August 15, 2019)

  • Bump syn and quote to 1.0 #79
  • Increase rust version to 1.31

v0.9.0 (March 20, 2019)

  • Enable "did you mean" suggestions by default
  • Make darling_core::{codegen, options} private #58
  • Fix Override::as_mut: #66

v0.8.6 (March 18, 2019)

  • Added "did you mean" suggestions for unknown fields behind the suggestions flag #60
  • Added Error::unknown_field_with_alts to support the suggestion use-case.
  • Added ast::Fields::len and ast::Fields::is_empty methods.

v0.8.5 (February 4, 2019)

  • Accept unquoted positive numeric literals #52
  • Add FromMeta to the syn::Lit enum and its variants
  • Improve error message for unexpected literal formats to not say "other"

v0.8.4 (February 4, 2019)

  • Use syn::Error to provide precise errors before proc_macro::Diagnostic is available
  • Add diagnostics feature flag to toggle between stable and unstable error backends
  • Attach error information in more contexts
  • Add allow_unknown_fields to support parsing the same attribute multiple times for different macros #51
  • Proc-macro authors will now see better errors in darling attributes

v0.8.3 (January 21, 2019)

  • Attach spans to errors in generated trait impls #37
  • Attach spans to errors for types with provided bespoke implementations
  • Deprecate set_span from 0.8.2, as spans should never be broadened after being initially set

v0.8.2 (January 17, 2019)

  • Add spans to errors to make quality warnings and errors easy in darling. This is blocked on diagnostics stabilizing.
  • Add darling::util::SpannedValue so proc-macro authors can remember position information alongside parsed values.

v0.8.0

  • Update dependency on syn to 0.15 #44. Thanks to @hcpl

v0.7.0 (July 24, 2018)

  • Update dependencies on syn and proc-macro2
  • Add util::IdentString, which acts as an Ident or its string equivalent

v0.6.3 (May 22, 2018)

  • Add support for Uses* traits in where predicates

v0.6.2 (May 22, 2018)

  • Add usage module for tracking type param and lifetime usage in generic declarations
    • Add UsesTypeParams and CollectsTypeParams traits #37
    • Add UsesLifetimes and CollectLifetimes traits #41
  • Don't add FromMeta bounds to type parameters only used by skipped fields #40

v0.6.1 (May 17, 2018)

  • Fix an issue where the syn update broke shape validation #36

v0.6.0 (May 15, 2018)

Breaking Changes

  • Renamed FromMetaItem to FromMeta, and renamed from_meta_item method to from_meta
  • Added dedicated derive(FromMetaItem) which panics and redirects users to FromMeta

v0.5.0 (May 10, 2018)

  • Add ast::Generics and ast::GenericParam to work with generics in a manner similar to ast::Data
  • Add ast::GenericParamExt to support alternate representations of generic parameters
  • Add util::WithOriginal to get a parsed representation and syn's own struct for a syntax block
  • Add FromGenerics and FromGenericParam traits (without derive support)
  • Change generated code for generics magic field to invoke FromGenerics trait during parsing
  • Add FromTypeParam trait #30. Thanks to @upsuper

v0.4.0 (April 5, 2018)

  • Update dependencies on proc-macro, quote, and syn #26. Thanks to @hcpl

v0.3.3 (April 2, 2018)

YANKED

v0.3.2 (March 13, 2018)

  • Derive Default on darling::Ignored (fixes #25).

v0.3.1 (March 7, 2018)

  • Support proc-macro2/nightly #24. Thanks to @kdy1

v0.3.0 (January 26, 2018)

Breaking Changes

  • Update syn to 0.12 #20. Thanks to @Eijebong
  • Update quote to 0.4 #20. Thanks to @Eijebong
  • Rename magic field body in derived FromDeriveInput structs to data to stay in sync with syn
  • Rename magic field data in derived FromVariant structs to fields to stay in sync with syn

v0.2.2 (December 5, 2017)

  • Update lazy_static to 1.0 #15. Thanks to @Eijebong

v0.2.1 (November 28, 2017)

  • Add impl FromMetaItem for integer types #15

v0.2.0 (June 18, 2017)

  • Added support for returning multiple errors from parsing #5
  • Derived impls no longer return on first error #5
  • Removed default types for V and F from ast::Body
  • Enum variants are automatically converted to snake_case #12