@@ -20,15 +20,14 @@ namespace clad {
2020
2121// NOLINTBEGIN(cppcoreguidelines-pro-type-union-access)
2222void TBRAnalyzer::setIsRequired (VarData& varData, bool isReq) {
23+ assert (varData.m_Type != VarData::REF_TYPE &&
24+ " references should be removed on the getIDSequence stage" );
2325 if (varData.m_Type == VarData::FUND_TYPE )
2426 varData.m_Val .m_FundData = isReq;
2527 else if (varData.m_Type == VarData::OBJ_TYPE ||
2628 varData.m_Type == VarData::ARR_TYPE )
2729 for (auto & pair : *varData.m_Val .m_ArrData )
2830 setIsRequired (pair.second , isReq);
29- else if (varData.m_Type == VarData::REF_TYPE && varData.m_Val .m_RefData )
30- if (auto * data = getVarDataFromExpr (varData.m_Val .m_RefData ))
31- setIsRequired (*data, isReq);
3231}
3332
3433void TBRAnalyzer::merge (VarData& targetData, VarData& mergeData) {
@@ -73,18 +72,15 @@ TBRAnalyzer::VarData TBRAnalyzer::copy(VarData& copyData) {
7372}
7473
7574bool TBRAnalyzer::findReq (const VarData& varData) {
75+ assert (varData.m_Type != VarData::REF_TYPE &&
76+ " references should be removed on the getIDSequence stage" );
7677 if (varData.m_Type == VarData::FUND_TYPE )
7778 return varData.m_Val .m_FundData ;
7879 if (varData.m_Type == VarData::OBJ_TYPE ||
7980 varData.m_Type == VarData::ARR_TYPE ) {
8081 for (auto & pair : *varData.m_Val .m_ArrData )
8182 if (findReq (pair.second ))
8283 return true ;
83- } else if (varData.m_Type == VarData::REF_TYPE && varData.m_Val .m_RefData ) {
84- if (auto * data = getVarDataFromExpr (varData.m_Val .m_RefData )) {
85- if (findReq (*data))
86- return true ;
87- }
8884 }
8985 return false ;
9086}
@@ -114,6 +110,8 @@ TBRAnalyzer::VarData* TBRAnalyzer::getVarDataFromExpr(const clang::Expr* E) {
114110 assert (data && " expression not found" );
115111
116112 for (auto it = IDSequence.rbegin (), e = IDSequence.rend (); it != e; ++it) {
113+ assert (data->m_Type != VarData::REF_TYPE &&
114+ " references should be removed on the getIDSequence stage" );
117115 if (data->m_Type == VarData::OBJ_TYPE ) {
118116 data = &(*data->m_Val .m_ArrData )[*it];
119117 } else if (data->m_Type == VarData::ARR_TYPE ) {
@@ -137,9 +135,6 @@ TBRAnalyzer::VarData* TBRAnalyzer::getVarDataFromExpr(const clang::Expr* E) {
137135 } else
138136 data = &foundElem->second ;
139137 }
140- } else if (data->m_Type == VarData::REF_TYPE ) {
141- assert (data->m_Val .m_RefData && " undefined m_RefData" );
142- data = getVarDataFromExpr (data->m_Val .m_RefData );
143138 }
144139 }
145140
0 commit comments