- fn decode<'a>(&'a self, decoder: &Decoder) -> MultipleResponseSet<Cow<'a, str>> {
- MultipleResponseSet {
- name: decoder.decode(&self.name),
+ fn decode<'a>(
+ &'a self,
+ decoder: &Decoder,
+ ) -> Result<MultipleResponseSet<Identifier, Cow<'a, str>>, Error> {
+ let mut short_names = Vec::with_capacity(self.short_names.len());
+ for short_name in self.short_names.iter() {
+ if let Some(short_name) = decoder
+ .decode_identifier(short_name)
+ .map_err(|err| Error::InvalidMrSetName(err))
+ .warn_on_error(&decoder.warn)
+ {
+ short_names.push(short_name);
+ }
+ }
+ Ok(MultipleResponseSet {
+ name: decoder
+ .decode_identifier(&self.name)
+ .map_err(|err| Error::InvalidMrSetVariableName(err))?,