Skip to content

Commit 400f371

Browse files
committed
moved runChecks() and getErrorMessages() implementions of checks into source files
1 parent 32a37f4 commit 400f371

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

50 files changed

+942
-770
lines changed

Makefile

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -458,7 +458,7 @@ validateRules:
458458

459459
###### Build
460460

461-
$(libcppdir)/valueflow.o: lib/valueflow.cpp lib/addoninfo.h lib/analyzer.h lib/astutils.h lib/calculate.h lib/check.h lib/checkuninitvar.h lib/color.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/findtoken.h lib/forwardanalyzer.h lib/infer.h lib/library.h lib/mathlib.h lib/path.h lib/platform.h lib/programmemory.h lib/reverseanalyzer.h lib/settings.h lib/smallvector.h lib/sourcelocation.h lib/standards.h lib/suppressions.h lib/symboldatabase.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h lib/valueptr.h lib/vf_analyzers.h lib/vf_common.h lib/vf_settokenvalue.h lib/vfvalue.h
461+
$(libcppdir)/valueflow.o: lib/valueflow.cpp lib/addoninfo.h lib/analyzer.h lib/astutils.h lib/calculate.h lib/check.h lib/checkuninitvar.h lib/color.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/findtoken.h lib/forwardanalyzer.h lib/infer.h lib/library.h lib/mathlib.h lib/path.h lib/platform.h lib/programmemory.h lib/reverseanalyzer.h lib/settings.h lib/smallvector.h lib/sourcelocation.h lib/standards.h lib/suppressions.h lib/symboldatabase.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenlist.h lib/utils.h lib/valueflow.h lib/valueptr.h lib/vf_analyzers.h lib/vf_common.h lib/vf_settokenvalue.h lib/vfvalue.h
462462
$(CXX) ${INCLUDE_FOR_LIB} $(CPPFLAGS) $(CXXFLAGS) -c -o $@ $(libcppdir)/valueflow.cpp
463463

464464
$(libcppdir)/tokenize.o: lib/tokenize.cpp externals/simplecpp/simplecpp.h lib/addoninfo.h lib/astutils.h lib/color.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/library.h lib/mathlib.h lib/path.h lib/platform.h lib/preprocessor.h lib/settings.h lib/smallvector.h lib/sourcelocation.h lib/standards.h lib/summaries.h lib/suppressions.h lib/symboldatabase.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h lib/vfvalue.h
@@ -473,7 +473,7 @@ $(libcppdir)/addoninfo.o: lib/addoninfo.cpp externals/picojson/picojson.h lib/ad
473473
$(libcppdir)/analyzerinfo.o: lib/analyzerinfo.cpp externals/tinyxml2/tinyxml2.h lib/analyzerinfo.h lib/color.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/filesettings.h lib/mathlib.h lib/path.h lib/platform.h lib/standards.h lib/utils.h lib/xml.h
474474
$(CXX) ${INCLUDE_FOR_LIB} $(CPPFLAGS) $(CXXFLAGS) -c -o $@ $(libcppdir)/analyzerinfo.cpp
475475

476-
$(libcppdir)/astutils.o: lib/astutils.cpp lib/addoninfo.h lib/astutils.h lib/check.h lib/checkclass.h lib/config.h lib/errortypes.h lib/findtoken.h lib/infer.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/smallvector.h lib/sourcelocation.h lib/standards.h lib/suppressions.h lib/symboldatabase.h lib/templatesimplifier.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h lib/valueptr.h lib/vfvalue.h
476+
$(libcppdir)/astutils.o: lib/astutils.cpp lib/addoninfo.h lib/astutils.h lib/check.h lib/checkclass.h lib/config.h lib/errortypes.h lib/findtoken.h lib/infer.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/smallvector.h lib/sourcelocation.h lib/standards.h lib/suppressions.h lib/symboldatabase.h lib/templatesimplifier.h lib/token.h lib/utils.h lib/valueflow.h lib/valueptr.h lib/vfvalue.h
477477
$(CXX) ${INCLUDE_FOR_LIB} $(CPPFLAGS) $(CXXFLAGS) -c -o $@ $(libcppdir)/astutils.cpp
478478

479479
$(libcppdir)/check.o: lib/check.cpp lib/addoninfo.h lib/check.h lib/color.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/vfvalue.h
@@ -728,7 +728,7 @@ test/testbool.o: test/testbool.cpp externals/simplecpp/simplecpp.h lib/addoninfo
728728
test/testboost.o: test/testboost.cpp externals/simplecpp/simplecpp.h lib/addoninfo.h lib/check.h lib/checkboost.h lib/color.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/library.h lib/mathlib.h lib/platform.h lib/preprocessor.h lib/settings.h lib/standards.h lib/suppressions.h lib/tokenize.h lib/tokenlist.h test/fixture.h test/helpers.h
729729
$(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CXXFLAGS) -c -o $@ test/testboost.cpp
730730

731-
test/testbufferoverrun.o: test/testbufferoverrun.cpp externals/simplecpp/simplecpp.h lib/addoninfo.h lib/check.h lib/checkbufferoverrun.h lib/color.h lib/config.h lib/ctu.h lib/errorlogger.h lib/errortypes.h lib/library.h lib/mathlib.h lib/platform.h lib/preprocessor.h lib/settings.h lib/sourcelocation.h lib/standards.h lib/suppressions.h lib/symboldatabase.h lib/templatesimplifier.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/vfvalue.h test/fixture.h test/helpers.h
731+
test/testbufferoverrun.o: test/testbufferoverrun.cpp externals/simplecpp/simplecpp.h lib/addoninfo.h lib/check.h lib/checkbufferoverrun.h lib/color.h lib/config.h lib/ctu.h lib/errorlogger.h lib/errortypes.h lib/library.h lib/mathlib.h lib/platform.h lib/preprocessor.h lib/settings.h lib/standards.h lib/suppressions.h lib/tokenize.h lib/tokenlist.h lib/vfvalue.h test/fixture.h test/helpers.h
732732
$(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CXXFLAGS) -c -o $@ test/testbufferoverrun.cpp
733733

734734
test/testcharvar.o: test/testcharvar.cpp externals/simplecpp/simplecpp.h lib/addoninfo.h lib/check.h lib/checkother.h lib/color.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/library.h lib/mathlib.h lib/platform.h lib/preprocessor.h lib/settings.h lib/standards.h lib/suppressions.h lib/tokenize.h lib/tokenlist.h test/fixture.h test/helpers.h
@@ -854,7 +854,7 @@ test/testsizeof.o: test/testsizeof.cpp externals/simplecpp/simplecpp.h lib/addon
854854
test/teststandards.o: test/teststandards.cpp lib/addoninfo.h lib/check.h lib/color.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h test/fixture.h
855855
$(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CXXFLAGS) -c -o $@ test/teststandards.cpp
856856

857-
test/teststl.o: test/teststl.cpp externals/simplecpp/simplecpp.h lib/addoninfo.h lib/check.h lib/checkstl.h lib/color.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/library.h lib/mathlib.h lib/platform.h lib/preprocessor.h lib/settings.h lib/standards.h lib/suppressions.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/vfvalue.h test/fixture.h test/helpers.h
857+
test/teststl.o: test/teststl.cpp externals/simplecpp/simplecpp.h lib/addoninfo.h lib/check.h lib/checkstl.h lib/color.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/library.h lib/mathlib.h lib/platform.h lib/preprocessor.h lib/settings.h lib/standards.h lib/suppressions.h lib/tokenize.h lib/tokenlist.h lib/utils.h test/fixture.h test/helpers.h
858858
$(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CXXFLAGS) -c -o $@ test/teststl.cpp
859859

860860
test/teststring.o: test/teststring.cpp externals/simplecpp/simplecpp.h lib/addoninfo.h lib/check.h lib/checkstring.h lib/color.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/library.h lib/mathlib.h lib/platform.h lib/preprocessor.h lib/settings.h lib/standards.h lib/suppressions.h lib/tokenize.h lib/tokenlist.h test/fixture.h test/helpers.h
@@ -887,7 +887,7 @@ test/testtokenlist.o: test/testtokenlist.cpp externals/simplecpp/simplecpp.h lib
887887
test/testtokenrange.o: test/testtokenrange.cpp externals/simplecpp/simplecpp.h lib/addoninfo.h lib/check.h lib/color.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/library.h lib/mathlib.h lib/platform.h lib/preprocessor.h lib/settings.h lib/sourcelocation.h lib/standards.h lib/suppressions.h lib/symboldatabase.h lib/templatesimplifier.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/tokenrange.h lib/utils.h lib/vfvalue.h test/fixture.h test/helpers.h
888888
$(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CXXFLAGS) -c -o $@ test/testtokenrange.cpp
889889

890-
test/testtype.o: test/testtype.cpp externals/simplecpp/simplecpp.h lib/addoninfo.h lib/check.h lib/checktype.h lib/color.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/library.h lib/mathlib.h lib/platform.h lib/preprocessor.h lib/settings.h lib/standards.h lib/suppressions.h lib/tokenize.h lib/tokenlist.h lib/vfvalue.h test/fixture.h test/helpers.h
890+
test/testtype.o: test/testtype.cpp externals/simplecpp/simplecpp.h lib/addoninfo.h lib/check.h lib/checktype.h lib/color.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/library.h lib/mathlib.h lib/platform.h lib/preprocessor.h lib/settings.h lib/standards.h lib/suppressions.h lib/tokenize.h lib/tokenlist.h test/fixture.h test/helpers.h
891891
$(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CXXFLAGS) -c -o $@ test/testtype.cpp
892892

893893
test/testuninitvar.o: test/testuninitvar.cpp externals/simplecpp/simplecpp.h lib/addoninfo.h lib/check.h lib/checkuninitvar.h lib/color.h lib/config.h lib/ctu.h lib/errorlogger.h lib/errortypes.h lib/library.h lib/mathlib.h lib/platform.h lib/preprocessor.h lib/settings.h lib/standards.h lib/suppressions.h lib/tokenize.h lib/tokenlist.h lib/vfvalue.h test/fixture.h test/helpers.h

lib/check64bit.cpp

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,3 +161,18 @@ void Check64BitPortability::returnIntegerError(const Token *tok)
161161
"and Linux they are of different width. In worst case you end up casting 64-bit integer down to 32-bit pointer. "
162162
"The safe way is to always return a pointer.", CWE758, Certainty::normal);
163163
}
164+
165+
void Check64BitPortability::runChecks(const Tokenizer &tokenizer, ErrorLogger *errorLogger)
166+
{
167+
Check64BitPortability check64BitPortability(&tokenizer, &tokenizer.getSettings(), errorLogger);
168+
check64BitPortability.pointerassignment();
169+
}
170+
171+
void Check64BitPortability::getErrorMessages(ErrorLogger *errorLogger, const Settings *settings) const
172+
{
173+
Check64BitPortability c(nullptr, settings, errorLogger);
174+
c.assignmentAddressToIntegerError(nullptr);
175+
c.assignmentIntegerToAddressError(nullptr);
176+
c.returnIntegerError(nullptr);
177+
c.returnPointerError(nullptr);
178+
}

lib/check64bit.h

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,13 @@
2424

2525
#include "check.h"
2626
#include "config.h"
27-
#include "tokenize.h"
2827

2928
#include <string>
3029

3130
class ErrorLogger;
3231
class Settings;
3332
class Token;
34-
33+
class Tokenizer;
3534

3635
/// @addtogroup Checks
3736
/// @{
@@ -53,10 +52,7 @@ class CPPCHECKLIB Check64BitPortability : public Check {
5352
: Check(myName(), tokenizer, settings, errorLogger) {}
5453

5554
/** @brief Run checks against the normal token list */
56-
void runChecks(const Tokenizer &tokenizer, ErrorLogger *errorLogger) override {
57-
Check64BitPortability check64BitPortability(&tokenizer, &tokenizer.getSettings(), errorLogger);
58-
check64BitPortability.pointerassignment();
59-
}
55+
void runChecks(const Tokenizer &tokenizer, ErrorLogger *errorLogger) override;
6056

6157
/** Check for pointer assignment */
6258
void pointerassignment();
@@ -66,13 +62,7 @@ class CPPCHECKLIB Check64BitPortability : public Check {
6662
void returnIntegerError(const Token *tok);
6763
void returnPointerError(const Token *tok);
6864

69-
void getErrorMessages(ErrorLogger *errorLogger, const Settings *settings) const override {
70-
Check64BitPortability c(nullptr, settings, errorLogger);
71-
c.assignmentAddressToIntegerError(nullptr);
72-
c.assignmentIntegerToAddressError(nullptr);
73-
c.returnIntegerError(nullptr);
74-
c.returnPointerError(nullptr);
75-
}
65+
void getErrorMessages(ErrorLogger *errorLogger, const Settings *settings) const override;
7666

7767
static std::string myName() {
7868
return "64-bit portability";

lib/checkassert.cpp

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,3 +180,16 @@ bool CheckAssert::inSameScope(const Token* returnTok, const Token* assignTok)
180180
// TODO: even if a return is in the same scope, the assignment might not affect it.
181181
return returnTok->scope() == assignTok->scope();
182182
}
183+
184+
void CheckAssert::runChecks(const Tokenizer &tokenizer, ErrorLogger *errorLogger)
185+
{
186+
CheckAssert checkAssert(&tokenizer, &tokenizer.getSettings(), errorLogger);
187+
checkAssert.assertWithSideEffects();
188+
}
189+
190+
void CheckAssert::getErrorMessages(ErrorLogger *errorLogger, const Settings *settings) const
191+
{
192+
CheckAssert c(nullptr, settings, errorLogger);
193+
c.sideEffectInAssertError(nullptr, "function");
194+
c.assignmentInAssertError(nullptr, "var");
195+
}

lib/checkassert.h

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,14 @@
2424

2525
#include "check.h"
2626
#include "config.h"
27-
#include "tokenize.h"
2827

2928
#include <string>
3029

3130
class ErrorLogger;
3231
class Scope;
3332
class Settings;
3433
class Token;
34+
class Tokenizer;
3535

3636
/// @addtogroup Checks
3737
/// @{
@@ -49,10 +49,7 @@ class CPPCHECKLIB CheckAssert : public Check {
4949
: Check(myName(), tokenizer, settings, errorLogger) {}
5050

5151
/** run checks, the token list is not simplified */
52-
void runChecks(const Tokenizer &tokenizer, ErrorLogger *errorLogger) override {
53-
CheckAssert checkAssert(&tokenizer, &tokenizer.getSettings(), errorLogger);
54-
checkAssert.assertWithSideEffects();
55-
}
52+
void runChecks(const Tokenizer &tokenizer, ErrorLogger *errorLogger) override;
5653

5754
void assertWithSideEffects();
5855

@@ -62,11 +59,7 @@ class CPPCHECKLIB CheckAssert : public Check {
6259
void sideEffectInAssertError(const Token *tok, const std::string& functionName);
6360
void assignmentInAssertError(const Token *tok, const std::string &varname);
6461

65-
void getErrorMessages(ErrorLogger *errorLogger, const Settings *settings) const override {
66-
CheckAssert c(nullptr, settings, errorLogger);
67-
c.sideEffectInAssertError(nullptr, "function");
68-
c.assignmentInAssertError(nullptr, "var");
69-
}
62+
void getErrorMessages(ErrorLogger *errorLogger, const Settings *settings) const override;
7063

7164
static std::string myName() {
7265
return "Assert";

lib/checkautovariables.cpp

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -787,3 +787,28 @@ void CheckAutoVariables::errorInvalidDeallocation(const Token *tok, const ValueF
787787
"The deallocation of " + type + " results in undefined behaviour. You should only free memory "
788788
"that has been allocated dynamically.", CWE590, Certainty::normal);
789789
}
790+
791+
void CheckAutoVariables::runChecks(const Tokenizer &tokenizer, ErrorLogger *errorLogger)
792+
{
793+
CheckAutoVariables checkAutoVariables(&tokenizer, &tokenizer.getSettings(), errorLogger);
794+
checkAutoVariables.assignFunctionArg();
795+
checkAutoVariables.checkVarLifetime();
796+
checkAutoVariables.autoVariables();
797+
}
798+
799+
void CheckAutoVariables::getErrorMessages(ErrorLogger *errorLogger, const Settings *settings) const
800+
{
801+
CheckAutoVariables c(nullptr,settings,errorLogger);
802+
c.errorAutoVariableAssignment(nullptr, false);
803+
c.errorReturnReference(nullptr, ErrorPath{}, false);
804+
c.errorDanglingReference(nullptr, nullptr, ErrorPath{});
805+
c.errorReturnTempReference(nullptr, ErrorPath{}, false);
806+
c.errorDanglingTempReference(nullptr, ErrorPath{}, false);
807+
c.errorInvalidDeallocation(nullptr, nullptr);
808+
c.errorUselessAssignmentArg(nullptr);
809+
c.errorUselessAssignmentPtrArg(nullptr);
810+
c.errorReturnDanglingLifetime(nullptr, nullptr);
811+
c.errorInvalidLifetime(nullptr, nullptr);
812+
c.errorDanglngLifetime(nullptr, nullptr);
813+
c.errorDanglingTemporaryLifetime(nullptr, nullptr, nullptr);
814+
}

lib/checkautovariables.h

Lines changed: 3 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525
#include "check.h"
2626
#include "config.h"
2727
#include "errortypes.h"
28-
#include "tokenize.h"
2928

3029
#include <string>
3130
#include <set>
@@ -34,6 +33,7 @@ class Settings;
3433
class Token;
3534
class ErrorLogger;
3635
class Variable;
36+
class Tokenizer;
3737

3838
namespace ValueFlow {
3939
class Value;
@@ -55,12 +55,7 @@ class CPPCHECKLIB CheckAutoVariables : public Check {
5555
: Check(myName(), tokenizer, settings, errorLogger) {}
5656

5757
/** @brief Run checks against the normal token list */
58-
void runChecks(const Tokenizer &tokenizer, ErrorLogger *errorLogger) override {
59-
CheckAutoVariables checkAutoVariables(&tokenizer, &tokenizer.getSettings(), errorLogger);
60-
checkAutoVariables.assignFunctionArg();
61-
checkAutoVariables.checkVarLifetime();
62-
checkAutoVariables.autoVariables();
63-
}
58+
void runChecks(const Tokenizer &tokenizer, ErrorLogger *errorLogger) override;
6459

6560
/** assign function argument */
6661
void assignFunctionArg();
@@ -90,21 +85,7 @@ class CPPCHECKLIB CheckAutoVariables : public Check {
9085
void errorUselessAssignmentArg(const Token *tok);
9186
void errorUselessAssignmentPtrArg(const Token *tok);
9287

93-
void getErrorMessages(ErrorLogger *errorLogger, const Settings *settings) const override {
94-
CheckAutoVariables c(nullptr,settings,errorLogger);
95-
c.errorAutoVariableAssignment(nullptr, false);
96-
c.errorReturnReference(nullptr, ErrorPath{}, false);
97-
c.errorDanglingReference(nullptr, nullptr, ErrorPath{});
98-
c.errorReturnTempReference(nullptr, ErrorPath{}, false);
99-
c.errorDanglingTempReference(nullptr, ErrorPath{}, false);
100-
c.errorInvalidDeallocation(nullptr, nullptr);
101-
c.errorUselessAssignmentArg(nullptr);
102-
c.errorUselessAssignmentPtrArg(nullptr);
103-
c.errorReturnDanglingLifetime(nullptr, nullptr);
104-
c.errorInvalidLifetime(nullptr, nullptr);
105-
c.errorDanglngLifetime(nullptr, nullptr);
106-
c.errorDanglingTemporaryLifetime(nullptr, nullptr, nullptr);
107-
}
88+
void getErrorMessages(ErrorLogger *errorLogger, const Settings *settings) const override;
10889

10990
static std::string myName() {
11091
return "Auto Variables";

lib/checkbool.cpp

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -517,3 +517,36 @@ void CheckBool::returnValueBoolError(const Token *tok)
517517
{
518518
reportError(tok, Severity::style, "returnNonBoolInBooleanFunction", "Non-boolean value returned from function returning bool");
519519
}
520+
521+
void CheckBool::runChecks(const Tokenizer &tokenizer, ErrorLogger *errorLogger)
522+
{
523+
CheckBool checkBool(&tokenizer, &tokenizer.getSettings(), errorLogger);
524+
525+
// Checks
526+
checkBool.checkComparisonOfBoolExpressionWithInt();
527+
checkBool.checkComparisonOfBoolWithInt();
528+
checkBool.checkAssignBoolToFloat();
529+
checkBool.pointerArithBool();
530+
checkBool.returnValueOfFunctionReturningBool();
531+
checkBool.checkComparisonOfFuncReturningBool();
532+
checkBool.checkComparisonOfBoolWithBool();
533+
checkBool.checkIncrementBoolean();
534+
checkBool.checkAssignBoolToPointer();
535+
checkBool.checkBitwiseOnBoolean();
536+
}
537+
538+
void CheckBool::getErrorMessages(ErrorLogger *errorLogger, const Settings *settings) const
539+
{
540+
CheckBool c(nullptr, settings, errorLogger);
541+
c.assignBoolToPointerError(nullptr);
542+
c.assignBoolToFloatError(nullptr);
543+
c.comparisonOfFuncReturningBoolError(nullptr, "func_name");
544+
c.comparisonOfTwoFuncsReturningBoolError(nullptr, "func_name1", "func_name2");
545+
c.comparisonOfBoolWithBoolError(nullptr, "var_name");
546+
c.incrementBooleanError(nullptr);
547+
c.bitwiseOnBooleanError(nullptr, "expression", "&&");
548+
c.comparisonOfBoolExpressionWithIntError(nullptr, true);
549+
c.pointerArithBoolError(nullptr);
550+
c.comparisonOfBoolWithInvalidComparator(nullptr, "expression");
551+
c.returnValueBoolError(nullptr);
552+
}

0 commit comments

Comments
 (0)