From 4e99b5aea4fda83ffc971a8e457379eed482510c Mon Sep 17 00:00:00 2001 From: Sergey Prigogin Date: Wed, 27 Jun 2012 18:03:44 -0700 Subject: [PATCH] Bug 383706 - Class member initialization checker produces false positives on deleted constructors --- .../checkers/ClassMembersInitializationChecker.java | 2 ++ .../ClassMembersInitializationCheckerTest.java | 10 ++++++++++ 2 files changed, 12 insertions(+) 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 e54cbe390ec..24954aaffea 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 @@ -248,6 +248,8 @@ public class ClassMembersInitializationChecker extends AbstractIndexAstChecker { private ICPPConstructor getConstructor(IASTDeclaration decl) { if (decl instanceof ICPPASTFunctionDefinition) { ICPPASTFunctionDefinition functionDefinition = (ICPPASTFunctionDefinition) decl; +// if (functionDefinition.isDeleted()) +// return null; IBinding binding = functionDefinition.getDeclarator().getName().resolveBinding(); if (binding instanceof ICPPConstructor) { ICPPConstructor constructor = (ICPPConstructor) binding; diff --git a/codan/org.eclipse.cdt.codan.core.test/src/org/eclipse/cdt/codan/core/internal/checkers/ClassMembersInitializationCheckerTest.java b/codan/org.eclipse.cdt.codan.core.test/src/org/eclipse/cdt/codan/core/internal/checkers/ClassMembersInitializationCheckerTest.java index 40b6a97aa6f..0f1faaeba99 100644 --- a/codan/org.eclipse.cdt.codan.core.test/src/org/eclipse/cdt/codan/core/internal/checkers/ClassMembersInitializationCheckerTest.java +++ b/codan/org.eclipse.cdt.codan.core.test/src/org/eclipse/cdt/codan/core/internal/checkers/ClassMembersInitializationCheckerTest.java @@ -314,6 +314,16 @@ public class ClassMembersInitializationCheckerTest extends CheckerTestCase { checkNoErrors(); } + // class C { + // public: + // C(const C& c) = delete; + // int i1, i2; + // }; + public void testNoErrorsOnDeletedConstructor() { + loadCodeAndRun(getAboveComment()); + checkNoErrors(); + } + // void func(int & a) { a = 0; } // class C { // C() { func(i); } // No warnings.