Copyright (c) 2000, 2015 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, 2015 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 java.util.ArrayList; import java.util.List; import org.eclipse.jdt.core.compiler.CharOperation; import org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants; public class MissingTypeBinding extends BinaryTypeBinding {
Special constructor for constructing proxies of missing types (114349)
Params:
  • packageBinding –
  • compoundName –
  • environment –
/** * Special constructor for constructing proxies of missing types (114349) * @param packageBinding * @param compoundName * @param environment */
public MissingTypeBinding(PackageBinding packageBinding, char[][] compoundName, LookupEnvironment environment) { this.compoundName = compoundName; computeId(); this.tagBits |= TagBits.IsBinaryBinding | TagBits.HierarchyHasProblems | TagBits.HasMissingType; this.environment = environment; this.fPackage = packageBinding; this.fileName = CharOperation.concatWith(compoundName, '/'); this.sourceName = compoundName[compoundName.length - 1]; // [java][util][Map$Entry] this.modifiers = ClassFileConstants.AccPublic; this.superclass = null; // will be fixed up using #setMissingSuperclass(...) this.superInterfaces = Binding.NO_SUPERINTERFACES; this.typeVariables = Binding.NO_TYPE_VARIABLES; this.memberTypes = Binding.NO_MEMBER_TYPES; this.fields = Binding.NO_FIELDS; this.methods = Binding.NO_METHODS; } @Override public TypeBinding clone(TypeBinding outerType) { return this; // shouldn't get here. }
See Also:
  • collectMissingTypes.collectMissingTypes(List)
/** * @see org.eclipse.jdt.internal.compiler.lookup.TypeBinding#collectMissingTypes(java.util.List) */
@Override public List<TypeBinding> collectMissingTypes(List<TypeBinding> missingTypes) { if (missingTypes == null) { missingTypes = new ArrayList<>(5); } else if (missingTypes.contains(this)) { return missingTypes; } missingTypes.add(this); return missingTypes; }
Missing binary type will answer false to #isValidBinding()
See Also:
  • problemId.problemId()
/** * Missing binary type will answer <code>false</code> to #isValidBinding() * @see org.eclipse.jdt.internal.compiler.lookup.Binding#problemId() */
@Override public int problemId() { return ProblemReasons.NotFound; }
Only used to fixup the superclass hierarchy of proxy binary types
Params:
  • missingSuperclass –
See Also:
/** * Only used to fixup the superclass hierarchy of proxy binary types * @param missingSuperclass * @see LookupEnvironment#createMissingType(PackageBinding, char[][]) */
void setMissingSuperclass(ReferenceBinding missingSuperclass) { this.superclass = missingSuperclass; } @Override public void setTypeAnnotations(AnnotationBinding[] annotations, boolean evalNullAnnotations) { return; // reject misguided attempts. } @Override public String toString() { return "[MISSING:" + new String(CharOperation.concatWith(this.compoundName, '.')) + "]"; //$NON-NLS-1$ //$NON-NLS-2$ } }