+ for record in headers.value_label.drain(..) {
+ let mut dict_indexes = Vec::with_capacity(record.dict_indexes.len());
+ let mut continuation_indexes = Vec::new();
+ let mut long_string_variables = Vec::new();
+ for value_index in record.dict_indexes.iter() {
+ if let Some(dict_index) = var_index_map.get(&(*value_index as usize - 1)) {
+ let variable = &dictionary.variables[*dict_index];
+ if variable.width.is_long_string() {
+ long_string_variables.push(variable.name.clone());
+ } else {
+ dict_indexes.push(*dict_index);
+ }
+ } else {
+ continuation_indexes.push(*value_index);
+ }
+ }
+ if !continuation_indexes.is_empty() {
+ warn(Error::LongStringContinuationIndexes {
+ offset: record.offsets.start,
+ indexes: continuation_indexes,
+ });
+ }
+ if !long_string_variables.is_empty() {
+ warn(Error::InvalidLongStringValueLabels {
+ offsets: record.offsets.clone(),
+ variables: long_string_variables,
+ });
+ }
+ }
+