| 505 | } |
| 506 | |
| 507 | void Compute(OpKernelContext* c) override { |
| 508 | const TensorList* l = nullptr; |
| 509 | OP_REQUIRES_OK(c, GetInputList(c, 0, &l)); |
| 510 | OP_REQUIRES(c, element_dtype_ == l->element_dtype, |
| 511 | errors::InvalidArgument("Invalid data types; op elements ", |
| 512 | DataTypeString(element_dtype_), |
| 513 | " but list elements ", |
| 514 | DataTypeString(l->element_dtype))); |
| 515 | int32 index = c->input(1).scalar<int32>()(); |
| 516 | OP_REQUIRES(c, index < l->tensors().size(), |
| 517 | errors::InvalidArgument("Trying to modify element ", index, |
| 518 | " in a list with ", l->tensors().size(), |
| 519 | " elements.")); |
| 520 | const Tensor& value = c->input(2); |
| 521 | OP_REQUIRES(c, l->element_shape.IsCompatibleWith(value.shape()), |
| 522 | errors::InvalidArgument( |
| 523 | "Tried to set a tensor with incompatible shape at a " |
| 524 | "list index. Item element shape: ", |
| 525 | value.shape().DebugString(), |
| 526 | " list shape: ", l->element_shape.DebugString())); |
| 527 | TensorList* output_list = nullptr; |
| 528 | OP_REQUIRES_OK(c, ForwardInputOrCreateNewList(c, 0, 0, *l, &output_list)); |
| 529 | output_list->tensors()[index] = value; |
| 530 | } |
| 531 | |
| 532 | private: |
| 533 | DataType element_dtype_; |
nothing calls this directly
no test coverage detected