Skip to content

Commit

Permalink
Merge pull request #1047 from alainmarcel/alainmarcel-patch-1
Browse files Browse the repository at this point in the history
hier path typespec fix
  • Loading branch information
alaindargelas committed Oct 27, 2023
2 parents c42e783 + 245a748 commit b017647
Showing 1 changed file with 48 additions and 6 deletions.
54 changes: 48 additions & 6 deletions templates/ExprEval.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2282,7 +2282,14 @@ any *ExprEval::hierarchicalSelector(std::vector<std::string> &select_path,
if (member->VpiName() == elemName) {
if (returnTypespec) {
if (ref_typespec *mrt = member->Typespec()) {
return mrt->Actual_typespec();
any *res = mrt->Actual_typespec();
if (level == select_path.size() - 1) {
return res;
} else {
return hierarchicalSelector(select_path, level + 1, res,
invalidValue, inst, pexpr,
returnTypespec, muteError);
}
}
} else {
return member->Default_value();
Expand Down Expand Up @@ -2325,7 +2332,14 @@ any *ExprEval::hierarchicalSelector(std::vector<std::string> &select_path,
} else if (ttps == UHDM_OBJECT_TYPE::uhdmarray_var) {
if (returnTypespec) {
if (ref_typespec *rt = var->Typespec()) {
return rt->Actual_typespec();
any *res = rt->Actual_typespec();
if (level == select_path.size() - 1) {
return res;
} else {
return hierarchicalSelector(select_path, level + 1, res,
invalidValue, inst, pexpr,
returnTypespec, muteError);
}
}
}
}
Expand All @@ -2335,7 +2349,14 @@ any *ExprEval::hierarchicalSelector(std::vector<std::string> &select_path,
any *res = nullptr;
if (returnTypespec) {
if (ref_typespec *mrt = member->Typespec()) {
res = mrt->Actual_typespec();
any *res = mrt->Actual_typespec();
if (level == select_path.size() - 1) {
return res;
} else {
return hierarchicalSelector(select_path, level + 1, res,
invalidValue, inst, pexpr,
returnTypespec, muteError);
}
}
} else {
res = member->Default_value();
Expand All @@ -2359,7 +2380,14 @@ any *ExprEval::hierarchicalSelector(std::vector<std::string> &select_path,
if (member->VpiName() == elemName) {
if (returnTypespec) {
if (ref_typespec *mrt = member->Typespec()) {
return mrt->Actual_typespec();
any *res = mrt->Actual_typespec();
if (level == select_path.size() - 1) {
return res;
} else {
return hierarchicalSelector(select_path, level + 1, res,
invalidValue, inst, pexpr,
returnTypespec, muteError);
}
}
} else {
return member->Default_value();
Expand All @@ -2379,7 +2407,14 @@ any *ExprEval::hierarchicalSelector(std::vector<std::string> &select_path,
for (typespec_member *member : *stpt->Members()) {
if (member->VpiName() == elemName) {
if (ref_typespec *mrt = member->Typespec()) {
return mrt->Actual_typespec();
any *res = mrt->Actual_typespec();
if (level == select_path.size() - 1) {
return res;
} else {
return hierarchicalSelector(select_path, level + 1, res,
invalidValue, inst, pexpr,
returnTypespec, muteError);
}
}
}
}
Expand Down Expand Up @@ -2428,7 +2463,14 @@ any *ExprEval::hierarchicalSelector(std::vector<std::string> &select_path,
if (member->VpiName() == elemName) {
if (returnTypespec) {
if (ref_typespec *mrt = member->Typespec()) {
return mrt->Actual_typespec();
any *res = mrt->Actual_typespec();
if (level == select_path.size() - 1) {
return res;
} else {
return hierarchicalSelector(select_path, level + 1, res,
invalidValue, inst, pexpr,
returnTypespec, muteError);
}
}
} else {
return member->Default_value();
Expand Down

0 comments on commit b017647

Please sign in to comment.