Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarco Stornelli2019-04-07 08:26:15 +0000
committerMarco Stornelli2019-04-07 08:26:15 +0000
commit77592ee87ac41d54f18715892fa8090c7245c53a (patch)
treed85bddb2b4f0f5cee098893888e35fcc867de2a2 /codan/org.eclipse.cdt.codan.checkers
parent70743bcc784e0df450564f68b15adf07d74b9233 (diff)
downloadorg.eclipse.cdt-77592ee87ac41d54f18715892fa8090c7245c53a.tar.gz
org.eclipse.cdt-77592ee87ac41d54f18715892fa8090c7245c53a.tar.xz
org.eclipse.cdt-77592ee87ac41d54f18715892fa8090c7245c53a.zip
Bug 546179 - Fix lack of warning for field references
With just a reference of the field even for another instance of the same class the warning wasn't provided to the user. Change-Id: Icb6ca008c2e61b8a762ecf31e4514cb0368c477d Signed-off-by: Marco Stornelli <marco.stornelli@gmail.com>
Diffstat (limited to 'codan/org.eclipse.cdt.codan.checkers')
-rw-r--r--codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/ClassMembersInitializationChecker.java6
1 files changed, 6 insertions, 0 deletions
diff --git a/codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/ClassMembersInitializationChecker.java b/codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/ClassMembersInitializationChecker.java
index 6542744abcb..346e13d2de2 100644
--- a/codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/ClassMembersInitializationChecker.java
+++ b/codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/ClassMembersInitializationChecker.java
@@ -26,6 +26,7 @@ import org.eclipse.cdt.core.dom.ast.ASTVisitor;
import org.eclipse.cdt.core.dom.ast.IASTBinaryExpression;
import org.eclipse.cdt.core.dom.ast.IASTDeclaration;
import org.eclipse.cdt.core.dom.ast.IASTExpression;
+import org.eclipse.cdt.core.dom.ast.IASTFieldReference;
import org.eclipse.cdt.core.dom.ast.IASTFunctionCallExpression;
import org.eclipse.cdt.core.dom.ast.IASTIdExpression;
import org.eclipse.cdt.core.dom.ast.IASTInitializerClause;
@@ -199,6 +200,11 @@ public class ClassMembersInitializationChecker extends AbstractIndexAstChecker {
@Override
public int visit(IASTName name) {
if (!constructorsStack.empty()) {
+ if (name.getParent() instanceof IASTFieldReference) {
+ IASTFieldReference ref = (IASTFieldReference) name.getParent();
+ if (!referencesThis(ref.getFieldOwner()))
+ return PROCESS_CONTINUE;
+ }
Set<IField> actualConstructorFields = constructorsStack.peek();
if (!actualConstructorFields.isEmpty()) {
IBinding binding = name.resolveBinding();

Back to the top