import net.sourceforge.phpdt.core.Signature;
import net.sourceforge.phpdt.core.jdom.IDOMNode;
-import com.sun.corba.se.internal.core.Constant;
-
/**
* @see IMember
*/
-/* package */ abstract class Member extends SourceRefElement implements IMember {
-protected Member(int type, IJavaElement parent, String name) {
- super(type, parent, name);
-}
+public abstract class Member extends SourceRefElement implements IMember {
+ protected Member(JavaElement parent, String name) {
+ super(parent, name);
+ }
protected boolean areSimilarMethods(
String name1, String[] params1,
String name2, String[] params2,
* @see IMember
*/
public IType getDeclaringType() {
- JavaElement parent = (JavaElement)getParent();
- if (parent.fLEType == TYPE) {
- return (IType) parent;
+ JavaElement parentElement = (JavaElement)getParent();
+ if (parentElement.getElementType() == TYPE) {
+ return (IType) parentElement;
}
return null;
}
protected char getHandleMementoDelimiter() {
return JavaElement.JEM_TYPE;
}
+/*
+ * Returns the outermost context defining a local element. Per construction, it can only be a
+ * method/field/initializarer member; thus, returns null if this member is already a top-level type or member type.
+ * e.g for X.java/X/Y/foo()/Z/bar()/T, it will return X.java/X/Y/foo()
+ */
+public Member getOuterMostLocalContext() {
+ IJavaElement current = this;
+ Member lastLocalContext = null;
+ parentLoop: while (true) {
+ switch (current.getElementType()) {
+ case CLASS_FILE:
+ case COMPILATION_UNIT:
+ break parentLoop; // done recursing
+ case TYPE:
+ // cannot be a local context
+ break;
+ case INITIALIZER:
+ case FIELD:
+ case METHOD:
+ // these elements can define local members
+ lastLocalContext = (Member) current;
+ break;
+ }
+ current = current.getParent();
+ }
+ return lastLocalContext;
+}
/**
* @see IMember
*/
/**
* @see IMember
*/
+public IType getType(String typeName, int count) {
+ if (isBinary()) {
+ throw new IllegalArgumentException("Not a source member " + toStringWithAncestors()); //$NON-NLS-1$
+ } else {
+ SourceType type = new SourceType(this, typeName);
+ type.occurrenceCount = count;
+ return type;
+ }
+}
+/**
+ * @see IMember
+ */
public boolean isBinary() {
return false;
}