1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-04-29 19:45:01 +02:00

Revert "Bug 402878 - Implementation of Member Accessibility on Type Level"

This reverts commit 53561a6686.
This commit is contained in:
Thomas Corbat 2013-04-15 14:59:55 +02:00
parent 53561a6686
commit 482e736a08
24 changed files with 45 additions and 512 deletions

View file

@ -10266,56 +10266,4 @@ public class AST2CPPTests extends AST2TestBase {
assertEquals(NamespaceNS.getNamespaceScope(), Inner.getScope()); assertEquals(NamespaceNS.getNamespaceScope(), Inner.getScope());
} }
// class AClass {
// int defaultMemberVariable;
// void defaultMemberFunction();
// class defaultNestedClass {};
// public:
// int publicMemberVariable;
// void publicMemberFunction();
// class publicNestedClass {};
// protected:
// int protectedMemberVariable;
// void protectedMemberFunction();
// class protectedNestedClass {};
// private:
// int privateMemberVariable;
// void privateMemberFunction();
// class privateNestedClass {};
// };
public void testMemberAccessibilities() throws Exception {
String code = getAboveComment();
BindingAssertionHelper bh = new BindingAssertionHelper(code, true);
ICPPClassType aClass = bh.assertNonProblem("AClass", 6);
ICPPField defaultMemberVariable = bh.assertNonProblem("defaultMemberVariable", 21);
assertAccessibility(ICPPClassType.a_private, aClass.getAccessibility(defaultMemberVariable));
ICPPMethod defaultMemberFunction = bh.assertNonProblem("defaultMemberFunction", 21);
assertAccessibility(ICPPClassType.a_private, aClass.getAccessibility(defaultMemberFunction));
ICPPClassType defaultNestedClass = bh.assertNonProblem("defaultNestedClass", 18);
assertAccessibility(ICPPClassType.a_private, aClass.getAccessibility(defaultNestedClass));
ICPPField publicMemberVariable = bh.assertNonProblem("publicMemberVariable", 20);
assertAccessibility(ICPPClassType.a_public, aClass.getAccessibility(publicMemberVariable));
ICPPMethod publicMemberFunction = bh.assertNonProblem("publicMemberFunction", 20);
assertAccessibility(ICPPClassType.a_public, aClass.getAccessibility(publicMemberFunction));
ICPPClassType publicNestedClass = bh.assertNonProblem("publicNestedClass", 17);
assertAccessibility(ICPPClassType.a_public, aClass.getAccessibility(publicNestedClass));
ICPPField protectedMemberVariable = bh.assertNonProblem("protectedMemberVariable", 23);
assertAccessibility(ICPPClassType.a_protected, aClass.getAccessibility(protectedMemberVariable));
ICPPMethod protectedMemberFunction = bh.assertNonProblem("protectedMemberFunction", 23);
assertAccessibility(ICPPClassType.a_protected, aClass.getAccessibility(protectedMemberFunction));
ICPPClassType protectedNestedClass = bh.assertNonProblem("protectedNestedClass", 20);
assertAccessibility(ICPPClassType.a_protected, aClass.getAccessibility(protectedNestedClass));
ICPPField privateMemberVariable = bh.assertNonProblem("privateMemberVariable", 21);
assertAccessibility(ICPPClassType.a_private, aClass.getAccessibility(privateMemberVariable));
ICPPMethod privateMemberFunction = bh.assertNonProblem("privateMemberFunction", 21);
assertAccessibility(ICPPClassType.a_private, aClass.getAccessibility(privateMemberFunction));
ICPPClassType privateNestedClass = bh.assertNonProblem("privateNestedClass", 18);
assertAccessibility(ICPPClassType.a_private, aClass.getAccessibility(privateNestedClass));
}
} }

View file

@ -7610,67 +7610,4 @@ public class AST2TemplateTests extends AST2TestBase {
public void testTemplateBaseClassConstructorCall_402602() throws Exception { public void testTemplateBaseClassConstructorCall_402602() throws Exception {
parseAndCheckBindings(); parseAndCheckBindings();
} }
// template<typename T>
// class ATemplate {
// int defaultMemberVariable;
// public:
// int publicMemberVariable;
// protected:
// int protectedMemberVariable;
// private:
// int privateMemberVariable;
// };
public void testTemplateMemberAccessibilities() throws Exception {
String code = getAboveComment();
BindingAssertionHelper bh = new BindingAssertionHelper(code, true);
ICPPClassTemplate aTemplate = bh.assertNonProblem("ATemplate", 9);
ICPPField defaultMemberVariable = bh.assertNonProblem("defaultMemberVariable", 21);
assertAccessibility(ICPPClassType.a_private, aTemplate.getAccessibility(defaultMemberVariable));
ICPPField publicMemberVariable = bh.assertNonProblem("publicMemberVariable", 20);
assertAccessibility(ICPPClassType.a_public, aTemplate.getAccessibility(publicMemberVariable));
ICPPField protectedMemberVariable = bh.assertNonProblem("protectedMemberVariable", 23);
assertAccessibility(ICPPClassType.a_protected, aTemplate.getAccessibility(protectedMemberVariable));
ICPPField privateMemberVariable = bh.assertNonProblem("privateMemberVariable", 21);
assertAccessibility(ICPPClassType.a_private, aTemplate.getAccessibility(privateMemberVariable));
}
// template<typename T>
// class ATemplate {};
//
// class A{};
//
// template<>
// class ATemplate<A> {
// int specializedDefaultVariable;
// public:
// int specializedPublicVariable;
// protected:
// int specializedProtectedVariable;
// private:
// int specializedPrivateVariable;
// };
public void testTemplateSpecializationMemberAccessibilities() throws Exception {
String code = getAboveComment();
BindingAssertionHelper bh = new BindingAssertionHelper(code, true);
ICPPClassSpecialization aTemplateSpecialization = bh.assertNonProblem("ATemplate<A>", 12);
ICPPField defaultMemberVariable = bh.assertNonProblem("specializedDefaultVariable", 26);
assertAccessibility(ICPPClassType.a_private, aTemplateSpecialization.getAccessibility(defaultMemberVariable));
ICPPField publicMemberVariable = bh.assertNonProblem("specializedPublicVariable", 25);
assertAccessibility(ICPPClassType.a_public, aTemplateSpecialization.getAccessibility(publicMemberVariable));
ICPPField protectedMemberVariable = bh.assertNonProblem("specializedProtectedVariable", 28);
assertAccessibility(ICPPClassType.a_protected, aTemplateSpecialization.getAccessibility(protectedMemberVariable));
ICPPField privateMemberVariable = bh.assertNonProblem("specializedPrivateVariable", 26);
assertAccessibility(ICPPClassType.a_private, aTemplateSpecialization.getAccessibility(privateMemberVariable));
}
} }

View file

@ -62,7 +62,6 @@ import org.eclipse.cdt.core.dom.ast.IVariable;
import org.eclipse.cdt.core.dom.ast.c.ICASTTypeIdInitializerExpression; import org.eclipse.cdt.core.dom.ast.c.ICASTTypeIdInitializerExpression;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTLinkageSpecification; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTLinkageSpecification;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTNamespaceDefinition; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTNamespaceDefinition;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPClassType;
import org.eclipse.cdt.core.dom.parser.IScannerExtensionConfiguration; import org.eclipse.cdt.core.dom.parser.IScannerExtensionConfiguration;
import org.eclipse.cdt.core.dom.parser.c.ANSICParserExtensionConfiguration; import org.eclipse.cdt.core.dom.parser.c.ANSICParserExtensionConfiguration;
import org.eclipse.cdt.core.dom.parser.c.GCCParserExtensionConfiguration; import org.eclipse.cdt.core.dom.parser.c.GCCParserExtensionConfiguration;
@ -866,26 +865,4 @@ public class AST2TestBase extends BaseTestCase {
assertInstance(stmt, IASTExpressionStatement.class); assertInstance(stmt, IASTExpressionStatement.class);
return (T) ((IASTExpressionStatement) stmt).getExpression(); return (T) ((IASTExpressionStatement) stmt).getExpression();
} }
protected void assertAccessibility(int expected, int actual) {
String expectedAccessibility = accessibilityName(expected);
String actualAccessibility = accessibilityName(actual);
String message = "Expected access specifier:<" + expectedAccessibility + "> but was:<" + actualAccessibility + "> -";
assertEquals(message, expected, actual);
}
private String accessibilityName(int expected) {
switch(expected){
case ICPPClassType.a_private:
return "private";
case ICPPClassType.a_protected:
return "protected";
case ICPPClassType.a_public:
return "public";
case ICPPClassType.a_unspecified:
return "unspecified";
default:
return "illegal access specifier";
}
}
} }

View file

@ -79,19 +79,19 @@ public class CPPFieldTests extends PDOMTestBase {
} }
public void testDefaultPrivateField() throws Exception { public void testDefaultPrivateField() throws Exception {
assertAccessibility(pdom, "Class1::defaultField", ICPPMember.v_private); assertVisibility(pdom, "Class1::defaultField", ICPPMember.v_private);
} }
public void testPrivateField() throws Exception { public void testPrivateField() throws Exception {
assertAccessibility(pdom, "Class1::privateField", ICPPMember.v_private); assertVisibility(pdom, "Class1::privateField", ICPPMember.v_private);
} }
public void testProtectedField() throws Exception { public void testProtectedField() throws Exception {
assertAccessibility(pdom, "Class1::protectedField", ICPPMember.v_protected); assertVisibility(pdom, "Class1::protectedField", ICPPMember.v_protected);
} }
public void testPublicField() throws Exception { public void testPublicField() throws Exception {
assertAccessibility(pdom, "Class1::publicField", ICPPMember.v_public); assertVisibility(pdom, "Class1::publicField", ICPPMember.v_public);
} }
public void testMutableField() throws Exception { public void testMutableField() throws Exception {

View file

@ -163,19 +163,19 @@ public class MethodTests extends PDOMTestBase {
} }
public void testDefaultPrivateMethod() throws Exception { public void testDefaultPrivateMethod() throws Exception {
assertAccessibility(pdom, "Class3::defaultMethod", ICPPMember.v_private); assertVisibility(pdom, "Class3::defaultMethod", ICPPMember.v_private);
} }
public void testPrivateMethod() throws Exception { public void testPrivateMethod() throws Exception {
assertAccessibility(pdom, "Class3::privateMethod", ICPPMember.v_private); assertVisibility(pdom, "Class3::privateMethod", ICPPMember.v_private);
} }
public void testProtectedMethod() throws Exception { public void testProtectedMethod() throws Exception {
assertAccessibility(pdom, "Class3::protectedMethod", ICPPMember.v_protected); assertVisibility(pdom, "Class3::protectedMethod", ICPPMember.v_protected);
} }
public void testPublicMethod() throws Exception { public void testPublicMethod() throws Exception {
assertAccessibility(pdom, "Class3::publicMethod", ICPPMember.v_public); assertVisibility(pdom, "Class3::publicMethod", ICPPMember.v_public);
} }
public void testInlineMethod() throws Exception { public void testInlineMethod() throws Exception {

View file

@ -202,11 +202,11 @@ public class PDOMTestBase extends BaseTestCase {
assertTrue(c.isAssignableFrom(bindings[0].getClass())); assertTrue(c.isAssignableFrom(bindings[0].getClass()));
} }
protected void assertAccessibility(PDOM pdom, String name, int accessibility) throws CoreException, DOMException { protected void assertVisibility(PDOM pdom, String name, int visibility) throws CoreException, DOMException {
IBinding[] bindings = findQualifiedName(pdom, name); IBinding[] bindings = findQualifiedName(pdom, name);
assertEquals(1, bindings.length); assertEquals(1, bindings.length);
ICPPMember member = (ICPPMember) bindings[0]; ICPPMember member = (ICPPMember) bindings[0];
assertEquals(accessibility, member.getVisibility()); assertEquals(visibility, member.getVisibility());
} }
public static final void assertFunctionRefCount(PDOM pdom, Class[] args, IBinding[] bindingPool, int refCount) throws CoreException { public static final void assertFunctionRefCount(PDOM pdom, Class[] args, IBinding[] bindingPool, int refCount) throws CoreException {

View file

@ -50,7 +50,6 @@ public class PDOMTests extends TestSuite {
suite.addTest(CPPFunctionTemplateTests.suite()); suite.addTest(CPPFunctionTemplateTests.suite());
suite.addTest(MethodTests.suite()); suite.addTest(MethodTests.suite());
suite.addTest(NamespaceTests.suite()); suite.addTest(NamespaceTests.suite());
suite.addTest(AccessibilityTests.suite());
suite.addTest(CFunctionTests.suite()); suite.addTest(CFunctionTests.suite());
suite.addTest(CVariableTests.suite()); suite.addTest(CVariableTests.suite());

View file

@ -11,9 +11,6 @@
******************************************************************************/ ******************************************************************************/
package org.eclipse.cdt.core.dom.ast.cpp; package org.eclipse.cdt.core.dom.ast.cpp;
import java.util.HashMap;
import java.util.Map;
import org.eclipse.cdt.core.dom.ast.IBinding; import org.eclipse.cdt.core.dom.ast.IBinding;
import org.eclipse.cdt.core.dom.ast.ICompositeType; import org.eclipse.cdt.core.dom.ast.ICompositeType;
import org.eclipse.cdt.core.dom.ast.IField; import org.eclipse.cdt.core.dom.ast.IField;
@ -27,26 +24,6 @@ import org.eclipse.cdt.core.dom.ast.IField;
public interface ICPPClassType extends ICompositeType, ICPPBinding { public interface ICPPClassType extends ICompositeType, ICPPBinding {
public static final ICPPClassType[] EMPTY_CLASS_ARRAY = {}; public static final ICPPClassType[] EMPTY_CLASS_ARRAY = {};
public static final int k_class = ICPPASTCompositeTypeSpecifier.k_class; public static final int k_class = ICPPASTCompositeTypeSpecifier.k_class;
/**
* @since 5.5
*/
public static final Map<IBinding, Integer> EMPTY_ACCESSIBILITY_MAP = new HashMap<IBinding, Integer>();
/**
* @since 5.5
*/
public static final int a_unspecified = 0;
/**
* @since 5.5
*/
public static final int a_public = 1;
/**
* @since 5.5
*/
public static final int a_protected = 2;
/**
* @since 5.5
*/
public static final int a_private = 3;
/** /**
* Returns an array of base class relationships. The returned array is empty if there * Returns an array of base class relationships. The returned array is empty if there
@ -130,27 +107,4 @@ public interface ICPPClassType extends ICompositeType, ICPPBinding {
* @since 5.5 * @since 5.5
*/ */
public boolean isFinal(); public boolean isFinal();
/**
* Gets the access specifier of the <code>member</code>.
*
* @param member The binding of the member to get the accessibility for.
*
* @return Returns the accessibility of the specified member. If
* <code>member</code> is not a member of this type ICPPClassType.v_unspecified
* is returned.
*
* @since 5.5
*/
public int getAccessibility(IBinding member);
/**
* Gets the access specifiers of all the class members.
*
* @return Returns a map of all the class members to their corresponding
* accessibility.
*
* @since 5.5
*/
public Map<IBinding, Integer> getMemberAccessibilities();
} }

View file

@ -14,7 +14,6 @@
package org.eclipse.cdt.internal.core.dom.parser.cpp; package org.eclipse.cdt.internal.core.dom.parser.cpp;
import java.util.HashSet; import java.util.HashSet;
import java.util.Map;
import java.util.Set; import java.util.Set;
import org.eclipse.cdt.core.CCorePlugin; import org.eclipse.cdt.core.CCorePlugin;
@ -448,18 +447,4 @@ public class CPPClassSpecialization extends CPPSpecialization
} }
return false; return false;
} }
@Override
public int getAccessibility(IBinding member) {
Map<IBinding, Integer> memberAccessibilities = ClassTypeHelper.getMemberAccessibilities(this);
if(memberAccessibilities.containsKey(member)){
return memberAccessibilities.get(member);
}
return a_unspecified;
}
@Override
public Map<IBinding, Integer> getMemberAccessibilities() {
return ClassTypeHelper.getMemberAccessibilities(this);
}
} }

View file

@ -14,8 +14,6 @@
*******************************************************************************/ *******************************************************************************/
package org.eclipse.cdt.internal.core.dom.parser.cpp; package org.eclipse.cdt.internal.core.dom.parser.cpp;
import java.util.Map;
import org.eclipse.cdt.core.dom.ast.ASTTypeUtil; import org.eclipse.cdt.core.dom.ast.ASTTypeUtil;
import org.eclipse.cdt.core.dom.ast.DOMException; import org.eclipse.cdt.core.dom.ast.DOMException;
import org.eclipse.cdt.core.dom.ast.IASTName; import org.eclipse.cdt.core.dom.ast.IASTName;
@ -256,18 +254,4 @@ public class CPPClassTemplate extends CPPTemplateDefinition implements ICPPClass
} }
return false; return false;
} }
@Override
public int getAccessibility(IBinding member) {
Map<IBinding, Integer> memberAccessibilities = ClassTypeHelper.getMemberAccessibilities(this);
if(memberAccessibilities.containsKey(member)){
return memberAccessibilities.get(member);
}
return a_unspecified;
}
@Override
public Map<IBinding, Integer> getMemberAccessibilities() {
return ClassTypeHelper.getMemberAccessibilities(this);
}
} }

View file

@ -14,8 +14,6 @@
*******************************************************************************/ *******************************************************************************/
package org.eclipse.cdt.internal.core.dom.parser.cpp; package org.eclipse.cdt.internal.core.dom.parser.cpp;
import java.util.Map;
import org.eclipse.cdt.core.dom.ILinkage; import org.eclipse.cdt.core.dom.ILinkage;
import org.eclipse.cdt.core.dom.ast.DOMException; import org.eclipse.cdt.core.dom.ast.DOMException;
import org.eclipse.cdt.core.dom.ast.IASTCompositeTypeSpecifier; import org.eclipse.cdt.core.dom.ast.IASTCompositeTypeSpecifier;
@ -111,14 +109,6 @@ public class CPPClassType extends PlatformObject implements ICPPInternalClassTyp
public boolean isFinal() { public boolean isFinal() {
return false; return false;
} }
@Override
public int getAccessibility(IBinding member) {
return a_unspecified;
}
@Override
public Map<IBinding, Integer> getMemberAccessibilities() {
return EMPTY_ACCESSIBILITY_MAP;
}
} }
private IASTName definition; private IASTName definition;
@ -422,18 +412,4 @@ public class CPPClassType extends PlatformObject implements ICPPInternalClassTyp
} }
return name; return name;
} }
@Override
public int getAccessibility(IBinding member) {
Map<IBinding, Integer> memberAccessibilities = ClassTypeHelper.getMemberAccessibilities(this);
if(memberAccessibilities.containsKey(member)){
return memberAccessibilities.get(member);
}
return a_unspecified;
}
@Override
public Map<IBinding, Integer> getMemberAccessibilities() {
return ClassTypeHelper.getMemberAccessibilities(this);
}
} }

View file

@ -14,7 +14,6 @@ package org.eclipse.cdt.internal.core.dom.parser.cpp;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map;
import org.eclipse.cdt.core.dom.ILinkage; import org.eclipse.cdt.core.dom.ILinkage;
import org.eclipse.cdt.core.dom.IName; import org.eclipse.cdt.core.dom.IName;
@ -345,16 +344,6 @@ public class CPPClosureType extends PlatformObject implements ICPPClassType, ICP
return false; return false;
} }
@Override
public int getAccessibility(IBinding member) {
return a_unspecified;
}
@Override
public Map<IBinding, Integer> getMemberAccessibilities() {
return EMPTY_ACCESSIBILITY_MAP;
}
private final class ClassScope implements ICPPClassScope { private final class ClassScope implements ICPPClassScope {
@Override @Override

View file

@ -12,8 +12,6 @@
*******************************************************************************/ *******************************************************************************/
package org.eclipse.cdt.internal.core.dom.parser.cpp; package org.eclipse.cdt.internal.core.dom.parser.cpp;
import java.util.Map;
import org.eclipse.cdt.core.dom.ast.ASTTypeUtil; import org.eclipse.cdt.core.dom.ast.ASTTypeUtil;
import org.eclipse.cdt.core.dom.ast.DOMException; import org.eclipse.cdt.core.dom.ast.DOMException;
import org.eclipse.cdt.core.dom.ast.IBinding; import org.eclipse.cdt.core.dom.ast.IBinding;
@ -248,14 +246,4 @@ public class CPPDeferredClassInstance extends CPPUnknownBinding implements ICPPD
} }
return new PDOMCPPDeferredClassInstance(fragment, (ICPPClassTemplate) template, args); return new PDOMCPPDeferredClassInstance(fragment, (ICPPClassTemplate) template, args);
} }
@Override
public int getAccessibility(IBinding member) {
return a_unspecified;
}
@Override
public Map<IBinding, Integer> getMemberAccessibilities() {
return EMPTY_ACCESSIBILITY_MAP;
}
} }

View file

@ -13,8 +13,6 @@
*******************************************************************************/ *******************************************************************************/
package org.eclipse.cdt.internal.core.dom.parser.cpp; package org.eclipse.cdt.internal.core.dom.parser.cpp;
import java.util.Map;
import org.eclipse.cdt.core.dom.ast.ASTTypeUtil; import org.eclipse.cdt.core.dom.ast.ASTTypeUtil;
import org.eclipse.cdt.core.dom.ast.DOMException; import org.eclipse.cdt.core.dom.ast.DOMException;
import org.eclipse.cdt.core.dom.ast.IASTExpression; import org.eclipse.cdt.core.dom.ast.IASTExpression;
@ -248,14 +246,4 @@ public class CPPTemplateTemplateParameter extends CPPTemplateParameter implement
public boolean isFinal() { public boolean isFinal() {
return false; return false;
} }
@Override
public int getAccessibility(IBinding member) {
return a_unspecified;
}
@Override
public Map<IBinding, Integer> getMemberAccessibilities() {
return EMPTY_ACCESSIBILITY_MAP;
}
} }

View file

@ -13,8 +13,6 @@
*******************************************************************************/ *******************************************************************************/
package org.eclipse.cdt.internal.core.dom.parser.cpp; package org.eclipse.cdt.internal.core.dom.parser.cpp;
import java.util.Map;
import org.eclipse.cdt.core.dom.ast.ASTTypeUtil; import org.eclipse.cdt.core.dom.ast.ASTTypeUtil;
import org.eclipse.cdt.core.dom.ast.IBinding; import org.eclipse.cdt.core.dom.ast.IBinding;
import org.eclipse.cdt.core.dom.ast.IField; import org.eclipse.cdt.core.dom.ast.IField;
@ -135,14 +133,4 @@ public class CPPUnknownMemberClass extends CPPUnknownMember implements ICPPUnkno
public boolean isFinal() { public boolean isFinal() {
return false; return false;
} }
@Override
public int getAccessibility(IBinding member) {
return a_unspecified;
}
@Override
public Map<IBinding, Integer> getMemberAccessibilities() {
return EMPTY_ACCESSIBILITY_MAP;
}
} }

View file

@ -47,7 +47,6 @@ import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTDeclSpecifier;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTElaboratedTypeSpecifier; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTElaboratedTypeSpecifier;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTemplateDeclaration; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTemplateDeclaration;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTUsingDeclaration; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTUsingDeclaration;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTVisibilityLabel;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPBase; import org.eclipse.cdt.core.dom.ast.cpp.ICPPBase;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPBinding; import org.eclipse.cdt.core.dom.ast.cpp.ICPPBinding;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPClassScope; import org.eclipse.cdt.core.dom.ast.cpp.ICPPClassScope;
@ -883,58 +882,6 @@ public class ClassTypeHelper {
return resultArray; return resultArray;
} }
/**
* Collects the accessibility specifiers for the declarations in a class.
*
* @param host The class to get the members accessibility specifiers of.
* @return A map containing all members of the class and their corresponding accessibility.
*/
public static Map<IBinding, Integer> getMemberAccessibilities(ICPPInternalClassTypeMixinHost host) {
if (host.getDefinition() == null) {
host.checkForDefinition();
if (host.getDefinition() == null) {
ICPPClassType backup = getBackupDefinition(host);
if (backup != null) {
return backup.getMemberAccessibilities();
}
return new HashMap<IBinding, Integer>();
}
}
Map<IBinding, Integer> accessibilities = new HashMap<IBinding, Integer>();
int accessibility = host.getKey() == ICPPClassType.k_class ? ICPPClassType.a_private
: ICPPClassType.a_public;
IASTDeclaration[] members = host.getCompositeTypeSpecifier().getMembers();
for (IASTDeclaration member : members) {
if (member instanceof ICPPASTVisibilityLabel) {
accessibility = ((ICPPASTVisibilityLabel) member).getVisibility();
}
if (member instanceof IASTSimpleDeclaration) {
IASTSimpleDeclaration memberDeclaration = (IASTSimpleDeclaration) member;
for (IASTDeclarator memberDeclarator : memberDeclaration.getDeclarators()) {
IBinding memberBinding = ASTQueries.findInnermostDeclarator(memberDeclarator)
.getName().resolveBinding();
accessibilities.put(memberBinding, accessibility);
}
IASTDeclSpecifier declSpec = memberDeclaration.getDeclSpecifier();
if (declSpec instanceof ICPPASTCompositeTypeSpecifier) {
IBinding memberBinding = ((ICPPASTCompositeTypeSpecifier) declSpec).getName()
.resolveBinding();
accessibilities.put(memberBinding, accessibility);
} else if (declSpec instanceof ICPPASTElaboratedTypeSpecifier
&& memberDeclaration.getDeclarators().length == 0) {
IBinding memberBinding = ((ICPPASTElaboratedTypeSpecifier) declSpec).getName()
.resolveBinding();
accessibilities.put(memberBinding, accessibility);
}
}
}
return accessibilities;
}
private static Map<String, List<ICPPMethod>> collectPureVirtualMethods(ICPPClassType classType, private static Map<String, List<ICPPMethod>> collectPureVirtualMethods(ICPPClassType classType,
Map<ICPPClassType, Map<String, List<ICPPMethod>>> cache, IASTNode point) { Map<ICPPClassType, Map<String, List<ICPPMethod>>> cache, IASTNode point) {
Map<String, List<ICPPMethod>> result = cache.get(classType); Map<String, List<ICPPMethod>> result = cache.get(classType);

View file

@ -17,7 +17,6 @@ import static org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.SemanticUti
import static org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.SemanticUtil.getNestedType; import static org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.SemanticUtil.getNestedType;
import java.util.Arrays; import java.util.Arrays;
import java.util.Map;
import org.eclipse.cdt.core.dom.IName; import org.eclipse.cdt.core.dom.IName;
import org.eclipse.cdt.core.dom.ast.IBinding; import org.eclipse.cdt.core.dom.ast.IBinding;
@ -216,14 +215,4 @@ class CompositeCPPClassType extends CompositeCPPBinding implements ICPPClassType
public boolean isFinal() { public boolean isFinal() {
return ((ICPPClassType) rbinding).isFinal(); return ((ICPPClassType) rbinding).isFinal();
} }
@Override
public int getAccessibility(IBinding member) {
return ((ICPPClassType) rbinding).getAccessibility(member);
}
@Override
public Map<IBinding, Integer> getMemberAccessibilities() {
return ((ICPPClassType) rbinding).getMemberAccessibilities();
}
} }

View file

@ -12,8 +12,6 @@
*******************************************************************************/ *******************************************************************************/
package org.eclipse.cdt.internal.core.index.composite.cpp; package org.eclipse.cdt.internal.core.index.composite.cpp;
import java.util.Map;
import org.eclipse.cdt.core.dom.ast.DOMException; import org.eclipse.cdt.core.dom.ast.DOMException;
import org.eclipse.cdt.core.dom.ast.IBinding; import org.eclipse.cdt.core.dom.ast.IBinding;
import org.eclipse.cdt.core.dom.ast.IField; import org.eclipse.cdt.core.dom.ast.IField;
@ -181,14 +179,4 @@ public class CompositeCPPTemplateTemplateParameter extends CompositeCPPBinding
public boolean isFinal() { public boolean isFinal() {
return false; return false;
} }
@Override
public int getAccessibility(IBinding member) {
return a_unspecified;
}
@Override
public Map<IBinding, Integer> getMemberAccessibilities() {
return EMPTY_ACCESSIBILITY_MAP;
}
} }

View file

@ -11,8 +11,6 @@
*******************************************************************************/ *******************************************************************************/
package org.eclipse.cdt.internal.core.pdom.dom; package org.eclipse.cdt.internal.core.pdom.dom;
import java.util.Map;
import org.eclipse.cdt.core.dom.ILinkage; import org.eclipse.cdt.core.dom.ILinkage;
import org.eclipse.cdt.core.dom.ast.ASTNodeProperty; import org.eclipse.cdt.core.dom.ast.ASTNodeProperty;
import org.eclipse.cdt.core.dom.ast.ASTTypeUtil; import org.eclipse.cdt.core.dom.ast.ASTTypeUtil;
@ -623,16 +621,6 @@ public class PDOMASTAdapter {
public boolean isFinal() { public boolean isFinal() {
return false; return false;
} }
@Override
public int getAccessibility(IBinding member) {
return ((ICPPClassType) fDelegate).getAccessibility(member);
}
@Override
public Map<IBinding, Integer> getMemberAccessibilities() {
return ((ICPPClassType) fDelegate).getMemberAccessibilities();
}
} }

View file

@ -11,7 +11,6 @@
package org.eclipse.cdt.internal.core.pdom.dom.cpp; package org.eclipse.cdt.internal.core.pdom.dom.cpp;
import org.eclipse.cdt.core.dom.IPDOMVisitor; import org.eclipse.cdt.core.dom.IPDOMVisitor;
import org.eclipse.cdt.core.dom.ast.IBinding;
import org.eclipse.cdt.core.dom.ast.IScope; import org.eclipse.cdt.core.dom.ast.IScope;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPClassType; import org.eclipse.cdt.core.dom.ast.cpp.ICPPClassType;
import org.eclipse.cdt.core.index.IIndexName; import org.eclipse.cdt.core.index.IIndexName;
@ -34,11 +33,4 @@ public interface IPDOMCPPClassType extends ICPPClassType, IPDOMBinding, IIndexTy
* Returns the scope name, for use in {@link IScope#getScopeName()} * Returns the scope name, for use in {@link IScope#getScopeName()}
*/ */
IIndexName getScopeName(); IIndexName getScopeName();
/**
* Sets the accessibility specifier of a given member.
* @param member The binding specifying the member.
* @param accessibility The accessibility of the <code>member</code>.
*/
void setAccessibility(IBinding member, int accessibility);
} }

View file

@ -18,7 +18,6 @@ import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.HashSet; import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.Set; import java.util.Set;
import org.eclipse.cdt.core.CCorePlugin; import org.eclipse.cdt.core.CCorePlugin;
@ -44,6 +43,7 @@ import org.eclipse.cdt.internal.core.dom.parser.cpp.ClassTypeHelper;
import org.eclipse.cdt.internal.core.dom.parser.cpp.ICPPClassSpecializationScope; import org.eclipse.cdt.internal.core.dom.parser.cpp.ICPPClassSpecializationScope;
import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPTemplates; import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPTemplates;
import org.eclipse.cdt.internal.core.index.IIndexCPPBindingConstants; import org.eclipse.cdt.internal.core.index.IIndexCPPBindingConstants;
import org.eclipse.cdt.internal.core.pdom.db.PDOMNodeLinkedList;
import org.eclipse.cdt.internal.core.pdom.dom.IPDOMMemberOwner; import org.eclipse.cdt.internal.core.pdom.dom.IPDOMMemberOwner;
import org.eclipse.cdt.internal.core.pdom.dom.PDOMBinding; import org.eclipse.cdt.internal.core.pdom.dom.PDOMBinding;
import org.eclipse.cdt.internal.core.pdom.dom.PDOMLinkage; import org.eclipse.cdt.internal.core.pdom.dom.PDOMLinkage;
@ -57,14 +57,14 @@ import org.eclipse.core.runtime.CoreException;
class PDOMCPPClassSpecialization extends PDOMCPPSpecialization implements class PDOMCPPClassSpecialization extends PDOMCPPSpecialization implements
ICPPClassSpecialization, IPDOMMemberOwner, IPDOMCPPClassType { ICPPClassSpecialization, IPDOMMemberOwner, IPDOMCPPClassType {
private static final int FIRST_BASE = PDOMCPPSpecialization.RECORD_SIZE + 0; private static final int FIRST_BASE = PDOMCPPSpecialization.RECORD_SIZE + 0;
private static final int MEMBERLIST = FIRST_BASE + 4; private static final int MEMBER_LIST = PDOMCPPSpecialization.RECORD_SIZE + 4;
private static final int FINAL = MEMBERLIST + PDOMCPPMemberBlock.RECORD_SIZE; // byte private static final int FINAL = PDOMCPPSpecialization.RECORD_SIZE + 8; // byte
/** /**
* The size in bytes of a PDOMCPPClassSpecialization record in the database. * The size in bytes of a PDOMCPPClassSpecialization record in the database.
*/ */
@SuppressWarnings("hiding") @SuppressWarnings("hiding")
protected static final int RECORD_SIZE = FINAL + 1; protected static final int RECORD_SIZE = PDOMCPPSpecialization.RECORD_SIZE + 9;
private volatile ICPPClassScope fScope; private volatile ICPPClassScope fScope;
private ObjectMap specializationMap; // Obtained from the synchronized PDOM cache private ObjectMap specializationMap; // Obtained from the synchronized PDOM cache
@ -442,14 +442,14 @@ class PDOMCPPClassSpecialization extends PDOMCPPSpecialization implements
@Override @Override
public void addChild(PDOMNode member) throws CoreException { public void addChild(PDOMNode member) throws CoreException {
PDOMCPPMemberBlock members = new PDOMCPPMemberBlock(getLinkage(), record + MEMBERLIST); PDOMNodeLinkedList list = new PDOMNodeLinkedList(getLinkage(), record + MEMBER_LIST);
members.addMember(member); list.addMember(member);
} }
@Override @Override
public void acceptUncached(IPDOMVisitor visitor) throws CoreException { public void acceptUncached(IPDOMVisitor visitor) throws CoreException {
PDOMCPPMemberBlock members = new PDOMCPPMemberBlock(getLinkage(), record + MEMBERLIST); PDOMNodeLinkedList list = new PDOMNodeLinkedList(getLinkage(), record + MEMBER_LIST);
members.accept(visitor); list.accept(visitor);
} }
@Override @Override
@ -475,36 +475,4 @@ class PDOMCPPClassSpecialization extends PDOMCPPSpecialization implements
private void setFinal(ICPPClassType ct) throws CoreException { private void setFinal(ICPPClassType ct) throws CoreException {
getDB().putByte(record + FINAL, (byte) (ct.isFinal() ? 1 : 0)); getDB().putByte(record + FINAL, (byte) (ct.isFinal() ? 1 : 0));
} }
@Override
public void setAccessibility(IBinding member, int accessibility) {
try {
PDOMCPPMemberBlock members = new PDOMCPPMemberBlock(getLinkage(), record + MEMBERLIST);
members.setAccessibility(member, accessibility);
} catch(CoreException e) {
CCorePlugin.log(e);
}
}
@Override
public int getAccessibility(IBinding member) {
try {
PDOMCPPMemberBlock members = new PDOMCPPMemberBlock(getLinkage(), record + MEMBERLIST);
return members.getAccessibility(member);
} catch(CoreException e) {
CCorePlugin.log(e);
return ICPPClassType.a_unspecified;
}
}
@Override
public Map<IBinding, Integer> getMemberAccessibilities() {
try {
PDOMCPPMemberBlock members = new PDOMCPPMemberBlock(getLinkage(), record + MEMBERLIST);
return members.getAccessibilities();
} catch(CoreException e) {
CCorePlugin.log(e);
return EMPTY_ACCESSIBILITY_MAP;
}
}
} }

View file

@ -15,11 +15,6 @@
*******************************************************************************/ *******************************************************************************/
package org.eclipse.cdt.internal.core.pdom.dom.cpp; package org.eclipse.cdt.internal.core.pdom.dom.cpp;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import org.eclipse.cdt.core.CCorePlugin; import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.core.dom.IPDOMVisitor; import org.eclipse.cdt.core.dom.IPDOMVisitor;
import org.eclipse.cdt.core.dom.ast.ASTTypeUtil; import org.eclipse.cdt.core.dom.ast.ASTTypeUtil;
@ -40,24 +35,29 @@ import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.SemanticUtil;
import org.eclipse.cdt.internal.core.index.IIndexCPPBindingConstants; import org.eclipse.cdt.internal.core.index.IIndexCPPBindingConstants;
import org.eclipse.cdt.internal.core.pdom.PDOM; import org.eclipse.cdt.internal.core.pdom.PDOM;
import org.eclipse.cdt.internal.core.pdom.db.Database; import org.eclipse.cdt.internal.core.pdom.db.Database;
import org.eclipse.cdt.internal.core.pdom.db.PDOMNodeLinkedList;
import org.eclipse.cdt.internal.core.pdom.dom.IPDOMMemberOwner; import org.eclipse.cdt.internal.core.pdom.dom.IPDOMMemberOwner;
import org.eclipse.cdt.internal.core.pdom.dom.PDOMLinkage; import org.eclipse.cdt.internal.core.pdom.dom.PDOMLinkage;
import org.eclipse.cdt.internal.core.pdom.dom.PDOMName; import org.eclipse.cdt.internal.core.pdom.dom.PDOMName;
import org.eclipse.cdt.internal.core.pdom.dom.PDOMNode; import org.eclipse.cdt.internal.core.pdom.dom.PDOMNode;
import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.CoreException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/** /**
* @author Doug Schaefer * @author Doug Schaefer
*/ */
class PDOMCPPClassType extends PDOMCPPBinding implements IPDOMCPPClassType, IPDOMMemberOwner { class PDOMCPPClassType extends PDOMCPPBinding implements IPDOMCPPClassType, IPDOMMemberOwner {
private static final int FIRSTBASE = PDOMCPPBinding.RECORD_SIZE; private static final int FIRSTBASE = PDOMCPPBinding.RECORD_SIZE + 0;
private static final int MEMBERLIST = FIRSTBASE + 4; private static final int MEMBERLIST = PDOMCPPBinding.RECORD_SIZE + 4;
private static final int FIRSTFRIEND = MEMBERLIST + PDOMCPPMemberBlock.RECORD_SIZE; private static final int FIRSTFRIEND = PDOMCPPBinding.RECORD_SIZE + 8;
private static final int KEY = FIRSTFRIEND + 4; // byte private static final int KEY = PDOMCPPBinding.RECORD_SIZE + 12; // byte
private static final int ANONYMOUS = KEY + 1; // byte private static final int ANONYMOUS= PDOMCPPBinding.RECORD_SIZE + 13; // byte
private static final int FINAL = ANONYMOUS + 1; // byte private static final int FINAL = PDOMCPPBinding.RECORD_SIZE + 14; // byte
@SuppressWarnings("hiding") @SuppressWarnings("hiding")
protected static final int RECORD_SIZE = FINAL + 1; protected static final int RECORD_SIZE = PDOMCPPBinding.RECORD_SIZE + 15;
private PDOMCPPClassScope fScope; // No need for volatile, all fields of PDOMCPPClassScope are final. private PDOMCPPClassScope fScope; // No need for volatile, all fields of PDOMCPPClassScope are final.
@ -111,14 +111,14 @@ class PDOMCPPClassType extends PDOMCPPBinding implements IPDOMCPPClassType, IPDO
public boolean mayHaveChildren() { public boolean mayHaveChildren() {
return true; return true;
} }
@Override @Override
public final void addChild(PDOMNode member) throws CoreException { public final void addChild(PDOMNode member) throws CoreException {
PDOMCPPMemberBlock members = new PDOMCPPMemberBlock(getLinkage(), record + MEMBERLIST); PDOMNodeLinkedList list = new PDOMNodeLinkedList(getLinkage(), record + MEMBERLIST);
members.addMember(member); list.addMember(member);
PDOMCPPClassScope.updateCache(this, member); PDOMCPPClassScope.updateCache(this, member);
} }
@Override @Override
public void accept(IPDOMVisitor visitor) throws CoreException { public void accept(IPDOMVisitor visitor) throws CoreException {
PDOMCPPClassScope.acceptViaCache(this, visitor, false); PDOMCPPClassScope.acceptViaCache(this, visitor, false);
@ -130,7 +130,7 @@ class PDOMCPPClassType extends PDOMCPPBinding implements IPDOMCPPClassType, IPDO
@Override @Override
public void acceptUncached(IPDOMVisitor visitor) throws CoreException { public void acceptUncached(IPDOMVisitor visitor) throws CoreException {
super.accept(visitor); super.accept(visitor);
PDOMCPPMemberBlock list = new PDOMCPPMemberBlock(getLinkage(), record + MEMBERLIST); PDOMNodeLinkedList list = new PDOMNodeLinkedList(getLinkage(), record + MEMBERLIST);
list.accept(visitor); list.accept(visitor);
} }
@ -143,7 +143,7 @@ class PDOMCPPClassType extends PDOMCPPBinding implements IPDOMCPPClassType, IPDO
long rec = base != null ? base.getRecord() : 0; long rec = base != null ? base.getRecord() : 0;
getDB().putRecPtr(record + FIRSTBASE, rec); getDB().putRecPtr(record + FIRSTBASE, rec);
} }
public void addBases(PDOMName classDefName, ICPPBase[] bases) throws CoreException { public void addBases(PDOMName classDefName, ICPPBase[] bases) throws CoreException {
getPDOM().removeCachedResult(record + PDOMCPPLinkage.CACHE_BASES); getPDOM().removeCachedResult(record + PDOMCPPLinkage.CACHE_BASES);
final PDOMLinkage linkage = getLinkage(); final PDOMLinkage linkage = getLinkage();
@ -192,7 +192,7 @@ class PDOMCPPClassType extends PDOMCPPBinding implements IPDOMCPPClassType, IPDO
} }
} }
} }
public void addFriend(PDOMCPPFriend friend) throws CoreException { public void addFriend(PDOMCPPFriend friend) throws CoreException {
PDOMCPPFriend firstFriend = getFirstFriend(); PDOMCPPFriend firstFriend = getFirstFriend();
friend.setNextFriend(firstFriend); friend.setNextFriend(firstFriend);
@ -255,7 +255,7 @@ class PDOMCPPClassType extends PDOMCPPBinding implements IPDOMCPPClassType, IPDO
return getDB().getByte(record + ANONYMOUS) != 0; return getDB().getByte(record + ANONYMOUS) != 0;
} catch (CoreException e) { } catch (CoreException e) {
CCorePlugin.log(e); CCorePlugin.log(e);
return false; return false;
} }
} }
@ -263,7 +263,7 @@ class PDOMCPPClassType extends PDOMCPPBinding implements IPDOMCPPClassType, IPDO
public boolean isFinal() { public boolean isFinal() {
try { try {
return getDB().getByte(record + FINAL) != 0; return getDB().getByte(record + FINAL) != 0;
} catch (CoreException e) { } catch (CoreException e){
CCorePlugin.log(e); CCorePlugin.log(e);
return false; return false;
} }
@ -309,7 +309,7 @@ class PDOMCPPClassType extends PDOMCPPBinding implements IPDOMCPPClassType, IPDO
ICPPBase[] bases= (ICPPBase[]) getPDOM().getCachedResult(key); ICPPBase[] bases= (ICPPBase[]) getPDOM().getCachedResult(key);
if (bases != null) if (bases != null)
return bases; return bases;
try { try {
List<PDOMCPPBase> list = new ArrayList<PDOMCPPBase>(); List<PDOMCPPBase> list = new ArrayList<PDOMCPPBase>();
for (PDOMCPPBase base = getFirstBase(); base != null; base = base.getNextBase()) for (PDOMCPPBase base = getFirstBase(); base != null; base = base.getNextBase())
@ -388,7 +388,7 @@ class PDOMCPPClassType extends PDOMCPPBinding implements IPDOMCPPClassType, IPDO
} }
@Override @Override
public ICPPMethod[] getMethods() { public ICPPMethod[] getMethods() {
return ClassTypeHelper.getMethods(this, null); return ClassTypeHelper.getMethods(this, null);
} }
@ -396,55 +396,23 @@ class PDOMCPPClassType extends PDOMCPPBinding implements IPDOMCPPClassType, IPDO
public ICPPMethod[] getAllDeclaredMethods() { public ICPPMethod[] getAllDeclaredMethods() {
return ClassTypeHelper.getAllDeclaredMethods(this, null); return ClassTypeHelper.getAllDeclaredMethods(this, null);
} }
@Override @Override
public IField[] getFields() { public IField[] getFields() {
return ClassTypeHelper.getFields(this, null); return ClassTypeHelper.getFields(this, null);
} }
@Override @Override
public IField findField(String name) { public IField findField(String name) {
return ClassTypeHelper.findField(this, name); return ClassTypeHelper.findField(this, name);
} }
@Override @Override
public Object clone() { public Object clone() {
try { try {
return super.clone(); return super.clone();
} catch (CloneNotSupportedException e) { } catch (CloneNotSupportedException e) {
} }
return null; return null;
} }
@Override
public void setAccessibility(IBinding member, int visibility) {
try {
PDOMCPPMemberBlock members = new PDOMCPPMemberBlock(getLinkage(), record + MEMBERLIST);
members.setAccessibility(member, visibility);
} catch(CoreException e) {
CCorePlugin.log(e);
}
}
@Override
public int getAccessibility(IBinding member) {
try {
PDOMCPPMemberBlock members = new PDOMCPPMemberBlock(getLinkage(), record + MEMBERLIST);
return members.getAccessibility(member);
} catch(CoreException e) {
CCorePlugin.log(e);
return ICPPClassType.a_unspecified;
}
}
@Override
public Map<IBinding, Integer> getMemberAccessibilities() {
try {
PDOMCPPMemberBlock members = new PDOMCPPMemberBlock(getLinkage(), record + MEMBERLIST);
return members.getAccessibilities();
} catch(CoreException e) {
CCorePlugin.log(e);
return EMPTY_ACCESSIBILITY_MAP;
}
}
} }

View file

@ -361,12 +361,7 @@ class PDOMCPPLinkage extends PDOMLinkage implements IIndexCPPBindingConstants {
if (inputBinding instanceof CPPClosureType) { if (inputBinding instanceof CPPClosureType) {
addImplicitMethods(pdomBinding, (ICPPClassType) binding, fromName); addImplicitMethods(pdomBinding, (ICPPClassType) binding, fromName);
} }
else if (parent instanceof IPDOMCPPClassType) {
IBinding bindingOwner = binding.getOwner();
if(bindingOwner instanceof ICPPClassType){
((IPDOMCPPClassType) parent).setAccessibility(pdomBinding, ((ICPPClassType) bindingOwner).getAccessibility(binding));
}
}
// Synchronize the tags associated with the persistent binding to match // Synchronize the tags associated with the persistent binding to match
// the set that is associated with the input binding. // the set that is associated with the input binding.
TagManager.getInstance().syncTags(pdomBinding, inputBinding); TagManager.getInstance().syncTags(pdomBinding, inputBinding);
@ -578,9 +573,6 @@ class PDOMCPPLinkage extends PDOMLinkage implements IIndexCPPBindingConstants {
PDOMBinding pdomBinding= adaptBinding(method); PDOMBinding pdomBinding= adaptBinding(method);
if (pdomBinding == null) { if (pdomBinding == null) {
pdomBinding = createBinding(type, method, fileLocalRec); pdomBinding = createBinding(type, method, fileLocalRec);
if (type instanceof IPDOMCPPClassType) {
((IPDOMCPPClassType) type).setAccessibility(pdomBinding, ICPPClassType.a_public);
}
} else if (!getPDOM().hasLastingDefinition(pdomBinding)) { } else if (!getPDOM().hasLastingDefinition(pdomBinding)) {
pdomBinding.update(this, method); pdomBinding.update(this, method);
old.remove(pdomBinding); old.remove(pdomBinding);

View file

@ -11,8 +11,6 @@
*******************************************************************************/ *******************************************************************************/
package org.eclipse.cdt.internal.core.pdom.dom.cpp; package org.eclipse.cdt.internal.core.pdom.dom.cpp;
import java.util.Map;
import org.eclipse.cdt.core.CCorePlugin; import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.core.dom.IPDOMVisitor; import org.eclipse.cdt.core.dom.IPDOMVisitor;
import org.eclipse.cdt.core.dom.ast.DOMException; import org.eclipse.cdt.core.dom.ast.DOMException;
@ -367,14 +365,4 @@ public class PDOMCPPTemplateTemplateParameter extends PDOMCPPBinding
public ICPPDeferredClassInstance asDeferredInstance() { public ICPPDeferredClassInstance asDeferredInstance() {
return null; return null;
} }
@Override
public int getAccessibility(IBinding member) {
return a_unspecified;
}
@Override
public Map<IBinding, Integer> getMemberAccessibilities() {
return EMPTY_ACCESSIBILITY_MAP;
}
} }