@@ -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 ));
@@ -929,7 +929,7 @@ bool Library::isIntArgValid(const Token *ftok, int argnr, const MathLib::bigint
929929 if (ac->valid .find (' .' ) != std::string::npos)
930930 return isFloatArgValid (ftok, argnr, argvalue);
931931 TokenList tokenList (nullptr );
932- gettokenlistfromvalid (ac->valid , tokenList);
932+ gettokenlistfromvalid (ac->valid , ftok-> isCpp (), tokenList);
933933 for (const Token *tok = tokenList.front (); tok; tok = tok->next ()) {
934934 if (tok->isNumber () && argvalue == MathLib::toBigNumber (tok->str ()))
935935 return true ;
@@ -949,7 +949,7 @@ bool Library::isFloatArgValid(const Token *ftok, int argnr, double argvalue) con
949949 if (!ac || ac->valid .empty ())
950950 return true ;
951951 TokenList tokenList (nullptr );
952- gettokenlistfromvalid (ac->valid , tokenList);
952+ gettokenlistfromvalid (ac->valid , ftok-> isCpp (), tokenList);
953953 for (const Token *tok = tokenList.front (); tok; tok = tok->next ()) {
954954 if (Token::Match (tok, " %num% : %num%" ) && argvalue >= MathLib::toDoubleNumber (tok->str ()) && argvalue <= MathLib::toDoubleNumber (tok->strAt (2 )))
955955 return true ;
@@ -1738,13 +1738,14 @@ bool Library::hasAnyTypeCheck(const std::string& typeName) const
17381738
17391739std::shared_ptr<Token> createTokenFromExpression (const std::string& returnValue,
17401740 const Settings* settings,
1741+ bool cpp,
17411742 std::unordered_map<nonneg int , const Token*>* lookupVarId)
17421743{
17431744 std::shared_ptr<TokenList> tokenList = std::make_shared<TokenList>(settings);
17441745 {
17451746 const std::string code = " return " + returnValue + " ;" ;
17461747 std::istringstream istr (code);
1747- if (!tokenList->createTokens (istr))
1748+ if (!tokenList->createTokens (istr, cpp ? Standards::Language::CPP : Standards::Language::C ))
17481749 return nullptr ;
17491750 }
17501751
0 commit comments