Copyright (c) 2000, 2016 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
/******************************************************************************* * Copyright (c) 2000, 2016 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.compiler.lookup; import org.eclipse.jdt.core.compiler.CharOperation; public final class MemberTypeBinding extends NestedTypeBinding { public MemberTypeBinding(char[][] compoundName, ClassScope scope, SourceTypeBinding enclosingType) { super(compoundName, scope, enclosingType); this.tagBits |= TagBits.MemberTypeMask; } public MemberTypeBinding(MemberTypeBinding prototype) { super(prototype); } void checkSyntheticArgsAndFields() { if (!isPrototype()) throw new IllegalStateException(); if (isStatic()) return; if (isInterface()) return; if (!isPrototype()) { ((MemberTypeBinding) this.prototype).checkSyntheticArgsAndFields(); return; } this.addSyntheticArgumentAndField(this.enclosingType); } /* Answer the receiver's constant pool name. * * NOTE: This method should only be used during/after code gen. */ @Override public char[] constantPoolName() /* java/lang/Object */ { if (this.constantPoolName != null) return this.constantPoolName; if (!isPrototype()) { return this.prototype.constantPoolName(); } return this.constantPoolName = CharOperation.concat(enclosingType().constantPoolName(), this.sourceName, '$'); } @Override public TypeBinding clone(TypeBinding outerType) { MemberTypeBinding copy = new MemberTypeBinding(this); copy.enclosingType = (SourceTypeBinding) outerType; return copy; }
See Also:
  • initializeDeprecatedAnnotationTagBits.initializeDeprecatedAnnotationTagBits()
/** * @see org.eclipse.jdt.internal.compiler.lookup.Binding#initializeDeprecatedAnnotationTagBits() */
@Override public void initializeDeprecatedAnnotationTagBits() { if (!isPrototype()) { this.prototype.initializeDeprecatedAnnotationTagBits(); return; } if ((this.tagBits & TagBits.DeprecatedAnnotationResolved) == 0) { super.initializeDeprecatedAnnotationTagBits(); if ((this.tagBits & TagBits.AnnotationDeprecated) == 0) { // check enclosing type ReferenceBinding enclosing; if (((enclosing = enclosingType()).tagBits & TagBits.DeprecatedAnnotationResolved) == 0) { enclosing.initializeDeprecatedAnnotationTagBits(); } if (enclosing.isViewedAsDeprecated()) { this.modifiers |= ExtraCompilerModifiers.AccDeprecatedImplicitly; this.tagBits |= (enclosing.tagBits & TagBits.AnnotationTerminallyDeprecated); } } } } @Override public String toString() { if (this.hasTypeAnnotations()) { return annotatedDebugName(); } else { return "Member type : " + new String(sourceName()) + " " + super.toString(); //$NON-NLS-2$ //$NON-NLS-1$ } } @Override public ModuleBinding module() { return this.enclosingType.module(); } }