diff options
Diffstat (limited to 'org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/BinaryRecordComponent.java')
-rw-r--r-- | org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/BinaryRecordComponent.java | 143 |
1 files changed, 143 insertions, 0 deletions
diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/BinaryRecordComponent.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/BinaryRecordComponent.java new file mode 100644 index 0000000000..678dfe0931 --- /dev/null +++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/BinaryRecordComponent.java @@ -0,0 +1,143 @@ +/******************************************************************************* + * Copyright (c) 2000, 2020 IBM Corporation and others. + * + * This program and the accompanying materials + * are made available under the terms of the Eclipse Public License 2.0 + * which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * IBM Corporation - initial API and implementation + *******************************************************************************/ +package org.eclipse.jdt.internal.core; + +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.jdt.core.Flags; +import org.eclipse.jdt.core.IAnnotation; +import org.eclipse.jdt.core.IField; +import org.eclipse.jdt.core.JavaModelException; +import org.eclipse.jdt.core.Signature; +import org.eclipse.jdt.internal.compiler.env.IBinaryAnnotation; +import org.eclipse.jdt.internal.compiler.env.IBinaryField; +import org.eclipse.jdt.internal.compiler.lookup.Binding; + +/** + * @see IField + */ + +/* package */ class BinaryRecordComponent extends BinaryMember implements IField { + +/* + * Constructs a handle to the field with the given name in the specified type. + */ +protected BinaryRecordComponent(JavaElement parent, String name) { + super(parent, name); +} +@Override +public boolean equals(Object o) { + if (!(o instanceof BinaryRecordComponent)) return false; + return super.equals(o); +} +@Override +public IAnnotation[] getAnnotations() throws JavaModelException { + IBinaryField info = (IBinaryField) getElementInfo(); + IBinaryAnnotation[] binaryAnnotations = info.getAnnotations(); + return getAnnotations(binaryAnnotations, info.getTagBits()); +} +/* + * @see IField + */ +@Override +public Object getConstant() throws JavaModelException { + IBinaryField info = (IBinaryField) getElementInfo(); + return convertConstant(info.getConstant()); +} +/* + * @see IMember + */ +@Override +public int getFlags() throws JavaModelException { + IBinaryField info = (IBinaryField) getElementInfo(); + return info.getModifiers(); +} +/* + * @see IJavaElement + */ +@Override +public int getElementType() { + return FIELD; +} +/* + * @see JavaElement#getHandleMemento() + */ +@Override +protected char getHandleMementoDelimiter() { + return JavaElement.JEM_FIELD; +} +@Override +public String getKey(boolean forceOpen) throws JavaModelException { + return getKey(this, forceOpen); +} +/* + * @see IField + */ +@Override +public String getTypeSignature() throws JavaModelException { + IBinaryField info = (IBinaryField) getElementInfo(); + char[] genericSignature = info.getGenericSignature(); + if (genericSignature != null) { + return new String(ClassFile.translatedName(genericSignature)); + } + return new String(ClassFile.translatedName(info.getTypeName())); +} +/* (non-Javadoc) + * @see org.eclipse.jdt.core.IField#isEnumConstant() + */@Override +public boolean isEnumConstant() throws JavaModelException { + return Flags.isEnum(getFlags()); +} + +@Override +public boolean isResolved() { + return false; +} +@Override +public JavaElement resolved(Binding binding) { + SourceRefElement resolvedHandle = new ResolvedBinaryField(this.parent, this.name, new String(binding.computeUniqueKey())); + resolvedHandle.occurrenceCount = this.occurrenceCount; + return resolvedHandle; +} +/* + * @private Debugging purposes + */ +@Override +protected void toStringInfo(int tab, StringBuffer buffer, Object info, boolean showResolvedInfo) { + buffer.append(tabString(tab)); + if (info == null) { + toStringName(buffer); + buffer.append(" (not open)"); //$NON-NLS-1$ + } else if (info == NO_INFO) { + toStringName(buffer); + } else { + try { + buffer.append(Signature.toString(getTypeSignature())); + buffer.append(" "); //$NON-NLS-1$ + toStringName(buffer); + } catch (JavaModelException e) { + buffer.append("<JavaModelException in toString of " + getElementName()); //$NON-NLS-1$ + } + } +} +@Override +public String getAttachedJavadoc(IProgressMonitor monitor) throws JavaModelException { + JavadocContents javadocContents = ((BinaryType) this.getDeclaringType()).getJavadocContents(monitor); + if (javadocContents == null) return null; + return javadocContents.getFieldDoc(this); +} +@Override +public boolean isRecordComponent() throws JavaModelException { + return false; +} +} |