@@ -53,10 +53,10 @@ static std::vector<std::string> getnames(const char *names)
5353 return ret;
5454}
5555
56- static void gettokenlistfromvalid (const std::string& valid, TokenList& tokenList)
56+ static void gettokenlistfromvalid (const std::string& valid, bool cpp, TokenList& tokenList)
5757{
5858 std::istringstream istr (valid + ' ,' );
59- tokenList.createTokens (istr);
59+ tokenList.createTokens (istr, cpp ? Standards::Language::CPP : Standards::Language::C );
6060 for (Token *tok = tokenList.front (); tok; tok = tok->next ()) {
6161 if (Token::Match (tok," - %num%" )) {
6262 tok->str (" -" + tok->strAt (1 ));
@@ -927,7 +927,7 @@ bool Library::isIntArgValid(const Token *ftok, int argnr, const MathLib::bigint
927927 if (ac->valid .find (' .' ) != std::string::npos)
928928 return isFloatArgValid (ftok, argnr, argvalue);
929929 TokenList tokenList (nullptr );
930- gettokenlistfromvalid (ac->valid , tokenList);
930+ gettokenlistfromvalid (ac->valid , ftok-> isCpp (), tokenList);
931931 for (const Token *tok = tokenList.front (); tok; tok = tok->next ()) {
932932 if (tok->isNumber () && argvalue == MathLib::toBigNumber (tok->str ()))
933933 return true ;
@@ -947,7 +947,7 @@ bool Library::isFloatArgValid(const Token *ftok, int argnr, double argvalue) con
947947 if (!ac || ac->valid .empty ())
948948 return true ;
949949 TokenList tokenList (nullptr );
950- gettokenlistfromvalid (ac->valid , tokenList);
950+ gettokenlistfromvalid (ac->valid , ftok-> isCpp (), tokenList);
951951 for (const Token *tok = tokenList.front (); tok; tok = tok->next ()) {
952952 if (Token::Match (tok, " %num% : %num%" ) && argvalue >= MathLib::toDoubleNumber (tok->str ()) && argvalue <= MathLib::toDoubleNumber (tok->strAt (2 )))
953953 return true ;
@@ -1736,13 +1736,14 @@ bool Library::hasAnyTypeCheck(const std::string& typeName) const
17361736
17371737std::shared_ptr<Token> createTokenFromExpression (const std::string& returnValue,
17381738 const Settings* settings,
1739+ bool cpp,
17391740 std::unordered_map<nonneg int , const Token*>* lookupVarId)
17401741{
17411742 std::shared_ptr<TokenList> tokenList = std::make_shared<TokenList>(settings);
17421743 {
17431744 const std::string code = " return " + returnValue + " ;" ;
17441745 std::istringstream istr (code);
1745- if (!tokenList->createTokens (istr))
1746+ if (!tokenList->createTokens (istr, cpp ? Standards::Language::CPP : Standards::Language::C ))
17461747 return nullptr ;
17471748 }
17481749
0 commit comments