import net.sourceforge.phpdt.internal.compiler.util.ObjectVector;
import net.sourceforge.phpdt.internal.compiler.util.SimpleNameVector;
import net.sourceforge.phpeclipse.internal.compiler.ast.CompilationUnitDeclaration;
-import net.sourceforge.phpeclipse.internal.compiler.ast.ImportReference;
import net.sourceforge.phpeclipse.internal.compiler.ast.TypeDeclaration;
public class CompilationUnitScope extends Scope {
this.environment = environment;
this.referenceContext = unit;
unit.scope = this;
- this.currentPackageName = unit.currentPackage == null ? CharOperation.NO_CHAR_CHAR : unit.currentPackage.tokens;
-
+// this.currentPackageName = unit.currentPackage == null ? CharOperation.NO_CHAR_CHAR : unit.currentPackage.tokens;
+ this.currentPackageName = null;
// if (environment.options.produceReferenceInfo) {
// this.qualifiedReferences = new CompoundNameVector();
// this.simpleNameReferences = new SimpleNameVector();
if (count != topLevelTypes.length)
System.arraycopy(topLevelTypes, 0, topLevelTypes = new SourceTypeBinding[count], 0, count);
}
- void checkAndSetImports() {
- // initialize the default imports if necessary... share the default java.lang.* import
- if (environment.defaultImports == null) {
- Binding importBinding = environment.getTopLevelPackage(JAVA);
- if (importBinding != null)
- importBinding = ((PackageBinding) importBinding).getTypeOrPackage(JAVA_LANG[1]);
-
- // abort if java.lang cannot be found...
- if (importBinding == null || !importBinding.isValidBinding())
- problemReporter().isClassPathCorrect(JAVA_LANG_OBJECT, referenceCompilationUnit());
-
- environment.defaultImports = new ImportBinding[] { new ImportBinding(JAVA_LANG, true, importBinding, null)};
- }
- if (referenceContext.imports == null) {
- imports = environment.defaultImports;
- return;
- }
-
- // allocate the import array, add java.lang.* by default
- int numberOfStatements = referenceContext.imports.length;
- int numberOfImports = numberOfStatements + 1;
- for (int i = 0; i < numberOfStatements; i++) {
- ImportReference importReference = referenceContext.imports[i];
- if (importReference.onDemand && CharOperation.equals(JAVA_LANG, importReference.tokens)) {
- numberOfImports--;
- break;
- }
- }
- ImportBinding[] resolvedImports = new ImportBinding[numberOfImports];
- resolvedImports[0] = environment.defaultImports[0];
- int index = 1;
-
- nextImport : for (int i = 0; i < numberOfStatements; i++) {
- ImportReference importReference = referenceContext.imports[i];
- char[][] compoundName = importReference.tokens;
-
- // skip duplicates or imports of the current package
- for (int j = 0; j < index; j++)
- if (resolvedImports[j].onDemand == importReference.onDemand)
- if (CharOperation.equals(compoundName, resolvedImports[j].compoundName))
- continue nextImport;
- if (importReference.onDemand == true)
- if (CharOperation.equals(compoundName, currentPackageName))
- continue nextImport;
-
- if (importReference.onDemand) {
- Binding importBinding = findOnDemandImport(compoundName);
- if (!importBinding.isValidBinding())
- continue nextImport; // we report all problems in faultInImports()
- resolvedImports[index++] = new ImportBinding(compoundName, true, importBinding, importReference);
- } else {
- resolvedImports[index++] = new ImportBinding(compoundName, false, null, importReference);
- }
- }
-
- // shrink resolvedImports... only happens if an error was reported
- if (resolvedImports.length > index)
- System.arraycopy(resolvedImports, 0, resolvedImports = new ImportBinding[index], 0, index);
- imports = resolvedImports;
- }
+// void checkAndSetImports() {
+// // initialize the default imports if necessary... share the default java.lang.* import
+// if (environment.defaultImports == null) {
+// Binding importBinding = environment.getTopLevelPackage(JAVA);
+// if (importBinding != null)
+// importBinding = ((PackageBinding) importBinding).getTypeOrPackage(JAVA_LANG[1]);
+//
+// // abort if java.lang cannot be found...
+// if (importBinding == null || !importBinding.isValidBinding())
+// problemReporter().isClassPathCorrect(JAVA_LANG_OBJECT, referenceCompilationUnit());
+//
+// environment.defaultImports = new ImportBinding[] { new ImportBinding(JAVA_LANG, true, importBinding, null)};
+// }
+// if (referenceContext.imports == null) {
+// imports = environment.defaultImports;
+// return;
+// }
+//
+// // allocate the import array, add java.lang.* by default
+// int numberOfStatements = referenceContext.imports.length;
+// int numberOfImports = numberOfStatements + 1;
+// for (int i = 0; i < numberOfStatements; i++) {
+// ImportReference importReference = referenceContext.imports[i];
+// if (importReference.onDemand && CharOperation.equals(JAVA_LANG, importReference.tokens)) {
+// numberOfImports--;
+// break;
+// }
+// }
+// ImportBinding[] resolvedImports = new ImportBinding[numberOfImports];
+// resolvedImports[0] = environment.defaultImports[0];
+// int index = 1;
+//
+// nextImport : for (int i = 0; i < numberOfStatements; i++) {
+// ImportReference importReference = referenceContext.imports[i];
+// char[][] compoundName = importReference.tokens;
+//
+// // skip duplicates or imports of the current package
+// for (int j = 0; j < index; j++)
+// if (resolvedImports[j].onDemand == importReference.onDemand)
+// if (CharOperation.equals(compoundName, resolvedImports[j].compoundName))
+// continue nextImport;
+// if (importReference.onDemand == true)
+// if (CharOperation.equals(compoundName, currentPackageName))
+// continue nextImport;
+//
+// if (importReference.onDemand) {
+// Binding importBinding = findOnDemandImport(compoundName);
+// if (!importBinding.isValidBinding())
+// continue nextImport; // we report all problems in faultInImports()
+// resolvedImports[index++] = new ImportBinding(compoundName, true, importBinding, importReference);
+// } else {
+// resolvedImports[index++] = new ImportBinding(compoundName, false, null, importReference);
+// }
+// }
+//
+// // shrink resolvedImports... only happens if an error was reported
+// if (resolvedImports.length > index)
+// System.arraycopy(resolvedImports, 0, resolvedImports = new ImportBinding[index], 0, index);
+// imports = resolvedImports;
+// }
/*
* INTERNAL USE-ONLY
* Innerclasses get their name computed as they are generated, since some may not
for (int i = 0, length = topLevelTypes.length; i < length; i++)
topLevelTypes[i].scope.connectTypeHierarchy();
}
- void faultInImports() {
- if (referenceContext.imports == null)
- return;
-
- // collect the top level type names if a single type import exists
- int numberOfStatements = referenceContext.imports.length;
- HashtableOfType typesBySimpleNames = null;
- for (int i = 0; i < numberOfStatements; i++) {
- if (!referenceContext.imports[i].onDemand) {
- typesBySimpleNames = new HashtableOfType(topLevelTypes.length + numberOfStatements);
- for (int j = 0, length = topLevelTypes.length; j < length; j++)
- typesBySimpleNames.put(topLevelTypes[j].sourceName, topLevelTypes[j]);
- break;
- }
- }
-
- // allocate the import array, add java.lang.* by default
- int numberOfImports = numberOfStatements + 1;
- for (int i = 0; i < numberOfStatements; i++) {
- ImportReference importReference = referenceContext.imports[i];
- if (importReference.onDemand && CharOperation.equals(JAVA_LANG, importReference.tokens)) {
- numberOfImports--;
- break;
- }
- }
- ImportBinding[] resolvedImports = new ImportBinding[numberOfImports];
- resolvedImports[0] = environment.defaultImports[0];
- int index = 1;
-
- nextImport : for (int i = 0; i < numberOfStatements; i++) {
- ImportReference importReference = referenceContext.imports[i];
- char[][] compoundName = importReference.tokens;
-
- // skip duplicates or imports of the current package
- for (int j = 0; j < index; j++)
- if (resolvedImports[j].onDemand == importReference.onDemand)
- if (CharOperation.equals(compoundName, resolvedImports[j].compoundName)) {
- problemReporter().unusedImport(importReference); // since skipped, must be reported now
- continue nextImport;
- }
- if (importReference.onDemand == true)
- if (CharOperation.equals(compoundName, currentPackageName)) {
- problemReporter().unusedImport(importReference); // since skipped, must be reported now
- continue nextImport;
- }
- if (importReference.onDemand) {
- Binding importBinding = findOnDemandImport(compoundName);
- if (!importBinding.isValidBinding()) {
- problemReporter().importProblem(importReference, importBinding);
- continue nextImport;
- }
- resolvedImports[index++] = new ImportBinding(compoundName, true, importBinding, importReference);
- } else {
- Binding typeBinding = findSingleTypeImport(compoundName);
- if (!typeBinding.isValidBinding()) {
- problemReporter().importProblem(importReference, typeBinding);
- continue nextImport;
- }
- if (typeBinding instanceof PackageBinding) {
- problemReporter().cannotImportPackage(importReference);
- continue nextImport;
- }
- if (typeBinding instanceof ReferenceBinding) {
- ReferenceBinding referenceBinding = (ReferenceBinding) typeBinding;
- if (importReference.isTypeUseDeprecated(referenceBinding, this)) {
- problemReporter().deprecatedType((TypeBinding) typeBinding, importReference);
- }
- }
- ReferenceBinding existingType = typesBySimpleNames.get(compoundName[compoundName.length - 1]);
- if (existingType != null) {
- // duplicate test above should have caught this case, but make sure
- if (existingType == typeBinding) {
- continue nextImport;
- }
- // either the type collides with a top level type or another imported type
- for (int j = 0, length = topLevelTypes.length; j < length; j++) {
- if (CharOperation.equals(topLevelTypes[j].sourceName, existingType.sourceName)) {
- problemReporter().conflictingImport(importReference);
- continue nextImport;
- }
- }
- problemReporter().duplicateImport(importReference);
- continue nextImport;
- }
- resolvedImports[index++] = new ImportBinding(compoundName, false, typeBinding, importReference);
- typesBySimpleNames.put(compoundName[compoundName.length - 1], (ReferenceBinding) typeBinding);
- }
- }
-
- // shrink resolvedImports... only happens if an error was reported
- if (resolvedImports.length > index)
- System.arraycopy(resolvedImports, 0, resolvedImports = new ImportBinding[index], 0, index);
- imports = resolvedImports;
- }
+// void faultInImports() {
+// if (referenceContext.imports == null)
+// return;
+//
+// // collect the top level type names if a single type import exists
+// int numberOfStatements = referenceContext.imports.length;
+// HashtableOfType typesBySimpleNames = null;
+// for (int i = 0; i < numberOfStatements; i++) {
+// if (!referenceContext.imports[i].onDemand) {
+// typesBySimpleNames = new HashtableOfType(topLevelTypes.length + numberOfStatements);
+// for (int j = 0, length = topLevelTypes.length; j < length; j++)
+// typesBySimpleNames.put(topLevelTypes[j].sourceName, topLevelTypes[j]);
+// break;
+// }
+// }
+//
+// // allocate the import array, add java.lang.* by default
+// int numberOfImports = numberOfStatements + 1;
+// for (int i = 0; i < numberOfStatements; i++) {
+// ImportReference importReference = referenceContext.imports[i];
+// if (importReference.onDemand && CharOperation.equals(JAVA_LANG, importReference.tokens)) {
+// numberOfImports--;
+// break;
+// }
+// }
+// ImportBinding[] resolvedImports = new ImportBinding[numberOfImports];
+// resolvedImports[0] = environment.defaultImports[0];
+// int index = 1;
+//
+// nextImport : for (int i = 0; i < numberOfStatements; i++) {
+// ImportReference importReference = referenceContext.imports[i];
+// char[][] compoundName = importReference.tokens;
+//
+// // skip duplicates or imports of the current package
+// for (int j = 0; j < index; j++)
+// if (resolvedImports[j].onDemand == importReference.onDemand)
+// if (CharOperation.equals(compoundName, resolvedImports[j].compoundName)) {
+// problemReporter().unusedImport(importReference); // since skipped, must be reported now
+// continue nextImport;
+// }
+// if (importReference.onDemand == true)
+// if (CharOperation.equals(compoundName, currentPackageName)) {
+// problemReporter().unusedImport(importReference); // since skipped, must be reported now
+// continue nextImport;
+// }
+// if (importReference.onDemand) {
+// Binding importBinding = findOnDemandImport(compoundName);
+// if (!importBinding.isValidBinding()) {
+// problemReporter().importProblem(importReference, importBinding);
+// continue nextImport;
+// }
+// resolvedImports[index++] = new ImportBinding(compoundName, true, importBinding, importReference);
+// } else {
+// Binding typeBinding = findSingleTypeImport(compoundName);
+// if (!typeBinding.isValidBinding()) {
+// problemReporter().importProblem(importReference, typeBinding);
+// continue nextImport;
+// }
+// if (typeBinding instanceof PackageBinding) {
+// problemReporter().cannotImportPackage(importReference);
+// continue nextImport;
+// }
+// if (typeBinding instanceof ReferenceBinding) {
+// ReferenceBinding referenceBinding = (ReferenceBinding) typeBinding;
+// if (importReference.isTypeUseDeprecated(referenceBinding, this)) {
+// problemReporter().deprecatedType((TypeBinding) typeBinding, importReference);
+// }
+// }
+// ReferenceBinding existingType = typesBySimpleNames.get(compoundName[compoundName.length - 1]);
+// if (existingType != null) {
+// // duplicate test above should have caught this case, but make sure
+// if (existingType == typeBinding) {
+// continue nextImport;
+// }
+// // either the type collides with a top level type or another imported type
+// for (int j = 0, length = topLevelTypes.length; j < length; j++) {
+// if (CharOperation.equals(topLevelTypes[j].sourceName, existingType.sourceName)) {
+// problemReporter().conflictingImport(importReference);
+// continue nextImport;
+// }
+// }
+// problemReporter().duplicateImport(importReference);
+// continue nextImport;
+// }
+// resolvedImports[index++] = new ImportBinding(compoundName, false, typeBinding, importReference);
+// typesBySimpleNames.put(compoundName[compoundName.length - 1], (ReferenceBinding) typeBinding);
+// }
+// }
+//
+// // shrink resolvedImports... only happens if an error was reported
+// if (resolvedImports.length > index)
+// System.arraycopy(resolvedImports, 0, resolvedImports = new ImportBinding[index], 0, index);
+// imports = resolvedImports;
+// }
public void faultInTypes() {
- faultInImports();
+// faultInImports();
if (topLevelTypes==null) {
topLevelTypes = new SourceTypeBinding[0];
}