diff options
author | Marco Stornelli | 2019-04-07 08:26:15 +0000 |
---|---|---|
committer | Marco Stornelli | 2019-04-07 08:26:15 +0000 |
commit | 77592ee87ac41d54f18715892fa8090c7245c53a (patch) | |
tree | d85bddb2b4f0f5cee098893888e35fcc867de2a2 /codan/org.eclipse.cdt.codan.checkers | |
parent | 70743bcc784e0df450564f68b15adf07d74b9233 (diff) | |
download | org.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.java | 6 |
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(); |