@@ -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 ));
@@ -920,7 +920,7 @@ bool Library::isIntArgValid(const Token *ftok, int argnr, const MathLib::bigint
920920 if (ac->valid .find (' .' ) != std::string::npos)
921921 return isFloatArgValid (ftok, argnr, argvalue);
922922 TokenList tokenList (nullptr );
923- gettokenlistfromvalid (ac->valid , tokenList);
923+ gettokenlistfromvalid (ac->valid , ftok-> isCpp (), tokenList);
924924 for (const Token *tok = tokenList.front (); tok; tok = tok->next ()) {
925925 if (tok->isNumber () && argvalue == MathLib::toBigNumber (tok->str ()))
926926 return true ;
@@ -940,7 +940,7 @@ bool Library::isFloatArgValid(const Token *ftok, int argnr, double argvalue) con
940940 if (!ac || ac->valid .empty ())
941941 return true ;
942942 TokenList tokenList (nullptr );
943- gettokenlistfromvalid (ac->valid , tokenList);
943+ gettokenlistfromvalid (ac->valid , ftok-> isCpp (), tokenList);
944944 for (const Token *tok = tokenList.front (); tok; tok = tok->next ()) {
945945 if (Token::Match (tok, " %num% : %num%" ) && argvalue >= MathLib::toDoubleNumber (tok->str ()) && argvalue <= MathLib::toDoubleNumber (tok->strAt (2 )))
946946 return true ;
@@ -1729,13 +1729,14 @@ bool Library::hasAnyTypeCheck(const std::string& typeName) const
17291729
17301730std::shared_ptr<Token> createTokenFromExpression (const std::string& returnValue,
17311731 const Settings* settings,
1732+ bool cpp,
17321733 std::unordered_map<nonneg int , const Token*>* lookupVarId)
17331734{
17341735 std::shared_ptr<TokenList> tokenList = std::make_shared<TokenList>(settings);
17351736 {
17361737 const std::string code = " return " + returnValue + " ;" ;
17371738 std::istringstream istr (code);
1738- if (!tokenList->createTokens (istr))
1739+ if (!tokenList->createTokens (istr, cpp ? Standards::Language::CPP : Standards::Language::C ))
17391740 return nullptr ;
17401741 }
17411742
0 commit comments