Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
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.java143
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;
+}
+}

Back to the top