/* * * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.flex.compiler.definitions.references; import org.apache.flex.abc.semantics.Name; import org.apache.flex.compiler.common.DependencyType; import org.apache.flex.compiler.definitions.IDefinition; import org.apache.flex.compiler.definitions.INamespaceDefinition; import org.apache.flex.compiler.projects.ICompilerProject; import org.apache.flex.compiler.units.ICompilationUnit; import com.google.common.collect.ImmutableSet; /** * A subinterface of {@link IReference} where all the qualifiers in the * reference are already resolved to namespace definitions. */ public interface IResolvedQualifiersReference extends IReference { /** * Gets the resolved qualifiers for this reference. * * @return An immutable set of the {@link INamespaceDefinition} qualifiers. */ ImmutableSet<INamespaceDefinition> getQualifiers(); /** * Resolves this reference to a definition in the given project. * * @param project The {@link ICompilerProject} in which to resolve the * reference. * @param referencingCompilationUnit The {@link ICompilationUnit} where the * resolution occurs. * @param dependencyType The type of dependency to introduce if this * resolves. * @return The {@link IDefinition} the reference resolves to. */ IDefinition resolve(ICompilerProject project, ICompilationUnit referencingCompilationUnit, DependencyType dependencyType); /** * Resolves this reference to a definition in the given project. This method * will not add any dependencies to the dependency graph in the project. * * @param project The project in which to resolve the reference. */ IDefinition resolve(ICompilerProject project); /** * Gets the AET {@link Name} that this reference represents. * * @return An AET {@link Name} representing this reference. */ Name getMName(); /** * Determines if base name of this {@link IResolvedQualifiersReference} * matches the base name of the specified * {@link IResolvedQualifiersReference} <b>and</b> at least one qualifier in * the specified {@link IResolvedQualifiersReference} is in the set of * qualifiers in this {@link IResolvedQualifiersReference}. * * @param toMatch {@link IResolvedQualifiersReference} to test. * @return false if the base name in this * {@link IResolvedQualifiersReference} is not equal to the base name in the * specified {@link IResolvedQualifiersReference}, false if none qualifiers * of the specified {@link IResolvedQualifiersReference} are in the set of * qualifiers in this {@link IResolvedQualifiersReference}, true otherwise. */ boolean matches(IResolvedQualifiersReference toMatch); }