Skip to content

Commit

Permalink
ECJ compiler errors.Fixes #612
Browse files Browse the repository at this point in the history
  • Loading branch information
snjeza committed Mar 19, 2023
1 parent 32779f4 commit 220ba00
Show file tree
Hide file tree
Showing 2 changed files with 99 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3027,6 +3027,25 @@ public final ReferenceBinding getJavaUtilIterator() {
*/
public final ReferenceBinding getMemberType(char[] typeName, ReferenceBinding enclosingType) {
ReferenceBinding memberType = findMemberType(typeName, enclosingType);
if (enclosingType.isHierarchyBeingConnected() && memberType == null && this.kind == CLASS_SCOPE) {
ClassScope scope = (ClassScope) this;
TypeReference superTypeReference = scope.referenceContext.superclass;
if (superTypeReference != null && superTypeReference.resolvedType instanceof ReferenceBinding) {
memberType = findMemberType(typeName, (ReferenceBinding) superTypeReference.resolvedType);
}
if (memberType == null && scope.referenceContext.superInterfaces != null
&& scope.referenceContext.superInterfaces.length > 0) {
TypeReference[] interfaces = scope.referenceContext.superInterfaces;
for (TypeReference reference : interfaces) {
if (reference != null && reference.resolvedType instanceof ReferenceBinding) {
memberType = findMemberType(typeName, (ReferenceBinding) reference.resolvedType);
if (memberType != null) {
break;
}
}
}
}
}
if (memberType != null) return memberType;
char[][] compoundName = new char[][] { typeName };
return new ProblemReferenceBinding(compoundName, null, ProblemReasons.NotFound);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -299,4 +299,84 @@ public void testissue342_001() throws Exception {
deleteProject(p);
}
}
public void testGH612_001() throws Exception {
if (!isJRE16)
return;
IJavaProject p = createJava16Project("p");
createFolder("/p/src/a");
try {
String source =
"package a;\n"
+ "public class X {\n"
+ " public static void main(String[] args) {\n"
+ " Sub sub = new Sub();\n"
+ " sub.method1();\n"
+ " }\n"
+ "\n"
+ " static class Outer<T> { \n"
+ " class Inner {\n"
+ " void sayHi() {\n"
+ " System.out.println(\"hello world!\");\n"
+ " }\n"
+ " }\n"
+ " }\n"
+ "\n"
+ " static class Sub extends Outer<Sub.Inner> {\n"
+ " void method1() {\n"
+ " Inner inner = new Inner();\n"
+ " inner.sayHi();\n"
+ " }\n"
+ " }\n"
+ "}\n";
createFile("p/src/a/X.java",
source);
p.getProject().build(IncrementalProjectBuilder.FULL_BUILD, null);
IMarker[] markers = p.getProject().findMarkers(null, true, IResource.DEPTH_INFINITE);
assertMarkers("markers in p",
"",
markers);
} finally {
deleteProject(p);
}
}
public void testGH612_002() throws Exception {
if (!isJRE16)
return;
IJavaProject p = createJava16Project("p");
createFolder("/p/src/a");
try {
String source =
"package a;\n"
+ "public class X {\n"
+ " public static void main(String[] args) {\n"
+ " Sub sub = new Sub();\n"
+ " sub.method1();\n"
+ " }\n"
+ "\n"
+ " static interface Outer<T> { \n"
+ " class Inner {\n"
+ " void sayHi() {\n"
+ " System.out.println(\"hello world!\");\n"
+ " }\n"
+ " }\n"
+ " }\n"
+ "\n"
+ " static class Sub implements Outer<Sub.Inner> {\n"
+ " void method1() {\n"
+ " Inner inner = new Inner();\n"
+ " inner.sayHi();\n"
+ " }\n"
+ " }\n"
+ "}\n";
createFile("p/src/a/X.java",
source);
p.getProject().build(IncrementalProjectBuilder.FULL_BUILD, null);
IMarker[] markers = p.getProject().findMarkers(null, true, IResource.DEPTH_INFINITE);
assertMarkers("markers in p",
"",
markers);
} finally {
deleteProject(p);
}
}
}

0 comments on commit 220ba00

Please sign in to comment.