(&self, name: &SymbolKey, dimensions: &[usize])
| 1014 | } |
| 1015 | |
| 1016 | fn check_array_dims(&self, name: &SymbolKey, dimensions: &[usize]) { |
| 1017 | if dimensions.is_empty() { |
| 1018 | panic!("Expected array {} must have at least one dimension", name); |
| 1019 | } |
| 1020 | |
| 1021 | let mut subscripts = vec![0; dimensions.len()]; |
| 1022 | for i in 0..dimensions.len() { |
| 1023 | subscripts[i] = dimensions[i] as i32; |
| 1024 | match self.machine.vm.get_global_array(&self.machine.image, name, &subscripts) { |
| 1025 | Err(GetGlobalError::SubscriptOutOfBounds(_)) => (), |
| 1026 | Ok(None) => { |
| 1027 | match self.machine.vm.get_program_array(&self.machine.image, name, &subscripts) |
| 1028 | { |
| 1029 | Err(GetGlobalError::SubscriptOutOfBounds(_)) => (), |
| 1030 | Ok(Some(_)) => panic!( |
| 1031 | "Expected array {} dimension {} to be {} but found larger", |
| 1032 | name, i, dimensions[i] |
| 1033 | ), |
| 1034 | Ok(None) => panic!("Expected array {} not defined", name), |
| 1035 | Err(e) => panic!("Expected array {} has wrong shape: {}", name, e), |
| 1036 | } |
| 1037 | } |
| 1038 | Ok(Some(_)) => panic!( |
| 1039 | "Expected array {} dimension {} to be {} but found larger", |
| 1040 | name, i, dimensions[i] |
| 1041 | ), |
| 1042 | Err(e) => panic!("Expected array {} has wrong shape: {}", name, e), |
| 1043 | } |
| 1044 | subscripts[i] = 0; |
| 1045 | } |
| 1046 | } |
| 1047 | |
| 1048 | fn check_array(&self, name: &SymbolKey, exp_array: &ExpArray) { |
| 1049 | let mut exp_contents = HashMap::with_capacity(exp_array.contents.len()); |
no test coverage detected