Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSasikanth Bharadwaj2016-02-19 08:12:41 +0000
committerSasikanth Bharadwaj2016-02-19 08:14:48 +0000
commitd8e876759bbccfa88c266183ef2c12348f6c6feb (patch)
tree02faaa12ecd6d2dfcc88219293cbfc6a851df43d
parent67bd27ae7bbbaef347cec88061a8b7842165b819 (diff)
downloadeclipse.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
-rw-r--r--org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/CompilationUnitDeclaration.java5
-rw-r--r--org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/ModuleEnvironment.java6
-rw-r--r--org.eclipse.jdt.core/model/org/eclipse/jdt/internal/compiler/parser/SourceTypeConverter.java5
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 ||

Back to the top