!2169 Change the array value out of bounds error to IndexError

Merge pull request !2169 from zhangbuxue/Change_the_get_value_out_of_bounds_error_to_IndexError
pull/2169/MERGE
mindspore-ci-bot 5 years ago committed by Gitee
commit f10e297498

@ -205,13 +205,14 @@ AbstractBasePtr InferTupleOrListGetItem(const std::string &op_name, const Abstra
ValuePtr index_value = index->BuildValue(); ValuePtr index_value = index->BuildValue();
if (!index_value->isa<Int32Imm>()) { if (!index_value->isa<Int32Imm>()) {
MS_LOG(EXCEPTION) << op_name << " evaluator index should be an int32 number, but got " << index_value->ToString(); MS_EXCEPTION(IndexError) << op_name << " evaluator index should be an int32 number, but got "
<< index_value->ToString();
} }
int idx_v = GetValue<int>(index_value); int idx_v = GetValue<int>(index_value);
std::size_t nelems = queue->elements().size(); std::size_t nelems = queue->elements().size();
if (idx_v >= SizeToInt(nelems) || idx_v < -SizeToInt(nelems)) { if (idx_v >= SizeToInt(nelems) || idx_v < -SizeToInt(nelems)) {
MS_LOG(EXCEPTION) << op_name << " evaluator index should be in range[-" << SizeToInt(nelems) << ", " MS_EXCEPTION(IndexError) << op_name << " evaluator index should be in range[-" << SizeToInt(nelems) << ", "
<< SizeToInt(nelems) << "), but got " << idx_v << "."; << SizeToInt(nelems) << "), but got " << idx_v << ".";
} }
std::size_t uidx_v = 0; std::size_t uidx_v = 0;
@ -232,18 +233,21 @@ AbstractBasePtr InferTupleOrListSetItem(const std::string &op_name, const Abstra
ValuePtr index_value = index->BuildValue(); ValuePtr index_value = index->BuildValue();
if (!index_value->isa<Int32Imm>()) { if (!index_value->isa<Int32Imm>()) {
MS_LOG(EXCEPTION) << op_name << " evaluator index should be an int32 number, but got " << index_value->ToString(); MS_EXCEPTION(IndexError) << op_name << " evaluator index should be an int32 number, but got "
<< index_value->ToString();
} }
int idx_v = GetValue<int>(index_value); int idx_v = GetValue<int>(index_value);
if (idx_v < 0) { if (idx_v < 0) {
MS_LOG(EXCEPTION) << "The index of " << typeid(T).name() << " should be positive number, but got " << idx_v << "."; MS_EXCEPTION(IndexError) << "The index of " << typeid(T).name() << " should be positive number, but got " << idx_v
<< ".";
} }
size_t uidx_v = IntToSize(idx_v); size_t uidx_v = IntToSize(idx_v);
AbstractBasePtrList elements = queue->elements(); AbstractBasePtrList elements = queue->elements();
std::size_t nelems = elements.size(); std::size_t nelems = elements.size();
if (uidx_v >= nelems) { if (uidx_v >= nelems) {
MS_LOG(EXCEPTION) << op_name << " evaluator the index: " << uidx_v << " to set out of range: " << nelems - 1 << "."; MS_EXCEPTION(IndexError) << op_name << " evaluator the index: " << uidx_v << " to set out of range: " << nelems - 1
<< ".";
} }
elements[uidx_v] = args_spec_list[2]; elements[uidx_v] = args_spec_list[2];
return std::make_shared<T>(elements); return std::make_shared<T>(elements);

Loading…
Cancel
Save