!12889 Fix switch layer not dynamic

From: @zjun3021
Reviewed-by: @chujinjin,@kisnwang
Signed-off-by: @kisnwang
pull/12889/MERGE
mindspore-ci-bot 4 years ago committed by Gitee
commit 0b83d1f6c7

@ -1810,8 +1810,17 @@ bool PynativeExecutor::ParseAssignExprNode(const std::shared_ptr<parse::ParseAst
if (func_name == parse::NAMED_PRIMITIVE_SUBSCRIPT) {
py::object slice_node = parse::python_adapter::GetPyObjAttr(func_node, parse::NAMED_PRIMITIVE_SLICE);
py::object value_in_slice_node = parse::python_adapter::GetPyObjAttr(slice_node, parse::NAMED_PRIMITIVE_VALUE);
if (py::isinstance<py::none>(value_in_slice_node)) {
MS_LOG(DEBUG) << "Parse value node is none!";
return false;
}
const auto &node_name_in_slice_node = ParseNodeName(ast, value_in_slice_node, parse::AST_MAIN_TYPE_EXPR);
if (cell_input_args_.find(node_name_in_slice_node) != cell_input_args_.end()) {
std::string id;
if (py::hasattr(value_in_slice_node, "id")) {
id = py::cast<std::string>(value_in_slice_node.attr("id"));
}
if (cell_input_args_.find(node_name_in_slice_node) != cell_input_args_.end() ||
(!id.empty() && cell_input_args_.find(id) != cell_input_args_.end())) {
return true;
}
}

Loading…
Cancel
Save