1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-07-25 09:55:29 +02:00

Bug 559007 - Fix label and tests

Change-Id: I37dd90e972f9ce326695ddd29b49e30c820752cc
This commit is contained in:
Marco Stornelli 2020-01-12 19:51:03 +01:00
parent abb0b06e2f
commit 4e73ec9cc6
2 changed files with 20 additions and 4 deletions

View file

@ -29,12 +29,10 @@ public class CStyleCastChecker extends AbstractIndexAstChecker {
@Override
public void initPreferences(IProblemWorkingCopy problem) {
super.initPreferences(problem);
addPreference(problem, PARAM_MACRO, CheckersMessages.Copyright_regex, true);
addPreference(problem, PARAM_MACRO, CheckersMessages.CStyleCastCheck_checkInMacro, true);
}
private boolean enclosedInMacroExpansion(IASTExpression statement) {
if (!checkMacro)
return false;
IASTNodeLocation[] locations = statement.getNodeLocations();
return locations.length == 1 && locations[0] instanceof IASTMacroExpansionLocation;
}
@ -51,7 +49,8 @@ public class CStyleCastChecker extends AbstractIndexAstChecker {
@Override
public int visit(IASTExpression expression) {
if (expression instanceof IASTCastExpression && !enclosedInMacroExpansion(expression)) {
if (expression instanceof IASTCastExpression
&& (checkMacro || !enclosedInMacroExpansion(expression))) {
if (((IASTCastExpression) expression).getOperator() == IASTCastExpression.op_cast)
reportProblem(ERR_ID, expression);
}

View file

@ -10,6 +10,7 @@
*******************************************************************************/
package org.eclipse.cdt.codan.core.internal.checkers;
import org.eclipse.cdt.codan.core.param.IProblemPreference;
import org.eclipse.cdt.codan.core.tests.CheckerTestCase;
import org.eclipse.cdt.codan.internal.checkers.CStyleCastChecker;
import org.eclipse.cdt.codan.internal.checkers.UsingInHeaderChecker;
@ -27,6 +28,11 @@ public class CStyleCastCheckerTest extends CheckerTestCase {
enableProblems(ERR_ID);
}
private void setCheckInMacro(boolean val) {
IProblemPreference pref = getPreference(CStyleCastChecker.ERR_ID, CStyleCastChecker.PARAM_MACRO);
pref.setValue(val);
}
@Override
public boolean isCpp() {
return true;
@ -54,6 +60,17 @@ public class CStyleCastCheckerTest extends CheckerTestCase {
// CAST(b);
//};
public void testInMacro() throws Exception {
loadCodeAndRun(getAboveComment());
checkErrorLine(4, ERR_ID);
}
//#define CAST(X) (void)X
//void bar() {
// int b;
// CAST(b);
//};
public void testInMacroOptionOff() throws Exception {
setCheckInMacro(false);
loadCodeAndRun(getAboveComment());
checkNoErrorsOfKind(ERR_ID);
}