Add explicit error handling for invalid locale names

finchie
Apr 15, 2025, 7:50 AM
IALFWVXRDMHQTQTL2N5RJAC47VR6YDBTJ3HMSCLR2KN5JHD52E3QC

Dependencies

  • [2] 7M4UI3TW Update dependencies to latest versions
  • [3] NFV26FRQ Improve glob error handling
  • [4] CESJ4CTO Move macro-specific code into `macro_impl` module
  • [*] OWXLFLRM Merge `cli_macros` shim into `fluent_embed`

Change contents

  • edit in fluent_embed_derive/src/macro_impl/error.rs at line 63
    [6.3942]
    [6.3942]
    }
    attribute::Error::InvalidLocale {
    path,
    locale,
    source,
    } => {
    emit_error! { attribute_stream, "invalid locale in file path";
    help = "Expected `{}` to be a valid locale identifier while reading `{}`", locale, path.display();
    note = source;
    }
  • edit in fluent_embed_derive/src/macro_impl/attribute.rs at line 21
    [3.1037]
    [3.3790]
    #[error("Invalid locale identifier")]
    InvalidLocale {
    path: PathBuf,
    locale: String,
    source: icu_locale::ParseError,
    },
  • replacement in fluent_embed_derive/src/macro_impl/attribute.rs at line 59
    [3.4746][3.4746:4796](),[3.4796][2.666:735]()
    // TODO: return an error instead of panic
    let locale = Locale::try_from_str(stripped_locale).unwrap();
    [3.4746]
    [3.4878]
    let locale =
    Locale::try_from_str(stripped_locale).map_err(|source| Error::InvalidLocale {
    path: entry.path().to_path_buf(),
    locale: stripped_locale.to_string(),
    source,
    })?;