@@ -3877,25 +3877,6 @@ static void valueFlowSymbolicOperators(const SymbolDatabase& symboldatabase, con
38773877 }
38783878}
38793879
3880- struct SymbolicInferModel : InferModel {
3881- const Token* expr;
3882- explicit SymbolicInferModel (const Token* tok) : expr(tok) {
3883- assert (expr->exprId () != 0 );
3884- }
3885- bool match (const ValueFlow::Value& value) const override
3886- {
3887- return value.isSymbolicValue () && value.tokvalue && value.tokvalue ->exprId () == expr->exprId ();
3888- }
3889- ValueFlow::Value yield (MathLib::bigint value) const override
3890- {
3891- ValueFlow::Value result (value);
3892- result.valueType = ValueFlow::Value::ValueType::SYMBOLIC;
3893- result.tokvalue = expr;
3894- result.setKnown ();
3895- return result;
3896- }
3897- };
3898-
38993880static void valueFlowSymbolicInfer (const SymbolDatabase& symboldatabase, const Settings& settings)
39003881{
39013882 for (const Scope* scope : symboldatabase.functionScopes ) {
@@ -3923,11 +3904,11 @@ static void valueFlowSymbolicInfer(const SymbolDatabase& symboldatabase, const S
39233904
39243905 std::vector<ValueFlow::Value> values;
39253906 {
3926- SymbolicInferModel leftModel{ tok->astOperand1 ()} ;
3907+ auto leftModel = makeSymbolicInferModel ( tok->astOperand1 ()) ;
39273908 values = infer (leftModel, tok->str (), 0 , tok->astOperand2 ()->values ());
39283909 }
39293910 if (values.empty ()) {
3930- SymbolicInferModel rightModel{ tok->astOperand2 ()} ;
3911+ auto rightModel = makeSymbolicInferModel ( tok->astOperand2 ()) ;
39313912 values = infer (rightModel, tok->str (), tok->astOperand1 ()->values (), 0 );
39323913 }
39333914 for (ValueFlow::Value& value : values) {
0 commit comments