@@ -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 ? Settings::Language::CPP : Settings::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 ;
@@ -1725,13 +1725,14 @@ bool Library::hasAnyTypeCheck(const std::string& typeName) const
17251725
17261726std::shared_ptr<Token> createTokenFromExpression (const std::string& returnValue,
17271727 const Settings* settings,
1728+ bool cpp,
17281729 std::unordered_map<nonneg int , const Token*>* lookupVarId)
17291730{
17301731 std::shared_ptr<TokenList> tokenList = std::make_shared<TokenList>(settings);
17311732 {
17321733 const std::string code = " return " + returnValue + " ;" ;
17331734 std::istringstream istr (code);
1734- if (!tokenList->createTokens (istr))
1735+ if (!tokenList->createTokens (istr, cpp ? Settings::Language::CPP : Settings::Language::C ))
17351736 return nullptr ;
17361737 }
17371738
0 commit comments