diff options
| author | Sasikanth Bharadwaj | 2016-02-19 08:12:41 +0000 |
|---|---|---|
| committer | Sasikanth Bharadwaj | 2016-02-19 08:14:48 +0000 |
| commit | d8e876759bbccfa88c266183ef2c12348f6c6feb (patch) | |
| tree | 02faaa12ecd6d2dfcc88219293cbfc6a851df43d | |
| parent | 67bd27ae7bbbaef347cec88061a8b7842165b819 (diff) | |
| download | eclipse.jdt.core-d8e876759bbccfa88c266183ef2c12348f6c6feb.tar.gz eclipse.jdt.core-d8e876759bbccfa88c266183ef2c12348f6c6feb.tar.xz eclipse.jdt.core-d8e876759bbccfa88c266183ef2c12348f6c6feb.zip | |
Fix several NPEs occurring because of module name not being set in CUD
in different scenarios
Change-Id: I3153ffb097c29b425afd2f6850e8be3600fd14a4
3 files changed, 14 insertions, 2 deletions
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/CompilationUnitDeclaration.java b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/CompilationUnitDeclaration.java index 663f65f13f..21622c182a 100644 --- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/CompilationUnitDeclaration.java +++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/CompilationUnitDeclaration.java @@ -34,6 +34,7 @@ import org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope; import org.eclipse.jdt.internal.compiler.lookup.ImportBinding; import org.eclipse.jdt.internal.compiler.lookup.LocalTypeBinding; import org.eclipse.jdt.internal.compiler.lookup.MethodScope; +import org.eclipse.jdt.internal.compiler.lookup.ModuleEnvironment; import org.eclipse.jdt.internal.compiler.lookup.TypeConstants; import org.eclipse.jdt.internal.compiler.lookup.TypeIds; import org.eclipse.jdt.internal.compiler.parser.NLSTag; @@ -101,7 +102,9 @@ public CompilationUnitDeclaration(ProblemReporter problemReporter, CompilationRe //by definition of a compilation unit.... this.sourceStart = 0; this.sourceEnd = sourceLength - 1; - if (compilationResult != null && compilationResult.compilationUnit != null) { + if (this.isModuleInfo()) { + this.module = this.moduleDeclaration != null ? this.moduleDeclaration.moduleName : ModuleEnvironment.UNNAMED; + } else if (compilationResult != null && compilationResult.compilationUnit != null) { this.module = compilationResult.compilationUnit.module(); } } diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/ModuleEnvironment.java b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/ModuleEnvironment.java index 41b8c09c59..f2218d3882 100644 --- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/ModuleEnvironment.java +++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/ModuleEnvironment.java @@ -116,6 +116,12 @@ public abstract class ModuleEnvironment implements INameEnvironment { // } public boolean isPackageVisible(char[] packageName, char[] sourceName, char[] clientName) { + boolean clientIsUnnamed = clientName == null || clientName == UNNAMED; + if (clientIsUnnamed) + return true; // Unnamed module can read every module + if (sourceName == null || sourceName == UNNAMED) + return clientIsUnnamed; // Unnamed module cannot be read by any named module + if (CharOperation.equals(sourceName, clientName)) return true; diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/compiler/parser/SourceTypeConverter.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/compiler/parser/SourceTypeConverter.java index d9b6611701..1c9819b873 100644 --- a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/compiler/parser/SourceTypeConverter.java +++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/compiler/parser/SourceTypeConverter.java @@ -114,7 +114,10 @@ public class SourceTypeConverter extends TypeConverter { SourceTypeElementInfo topLevelTypeInfo = (SourceTypeElementInfo) sourceTypes[0]; org.eclipse.jdt.core.ICompilationUnit cuHandle = topLevelTypeInfo.getHandle().getCompilationUnit(); this.cu = (ICompilationUnit) cuHandle; - + OpenableElementInfo info = (OpenableElementInfo) ((PackageFragment) cuHandle.getParent()).getPackageFragmentRoot().getElementInfo(); + IModule module = info.getModule(); + if (module != null) + this.unit.module = module.name(); final CompilationUnitElementInfo compilationUnitElementInfo = (CompilationUnitElementInfo) ((JavaElement) this.cu).getElementInfo(); if (this.has1_5Compliance && (compilationUnitElementInfo.annotationNumber >= CompilationUnitElementInfo.ANNOTATION_THRESHOLD_FOR_DIET_PARSE || |
