Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorANIRBAN CHAKRABORTY2013-11-05 05:08:50 +0000
committerssankaran2013-11-05 05:08:50 +0000
commitc33f41f43558cbfed253266a4a366ce7c1f4e32c (patch)
tree1c028af17976838022288f6722df5a24874c25c0
parentbdfd3905be75efba7f9a34392ffdab769337f246 (diff)
downloadeclipse.jdt.core-c33f41f43558cbfed253266a4a366ce7c1f4e32c.tar.gz
eclipse.jdt.core-c33f41f43558cbfed253266a4a366ce7c1f4e32c.tar.xz
eclipse.jdt.core-c33f41f43558cbfed253266a4a366ce7c1f4e32c.zip
Fixed Bug 419057 - ITypeBinding#getModifiers() misses implicit "static"I20131105-0800
for class member interface
-rw-r--r--org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/rewrite/describing/ASTRewritingTypeDeclTest.java35
-rw-r--r--org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/ClassScope.java2
2 files changed, 36 insertions, 1 deletions
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/rewrite/describing/ASTRewritingTypeDeclTest.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/rewrite/describing/ASTRewritingTypeDeclTest.java
index f86fa4f8c5..b4da2baeb1 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/rewrite/describing/ASTRewritingTypeDeclTest.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/rewrite/describing/ASTRewritingTypeDeclTest.java
@@ -21,6 +21,7 @@ import org.eclipse.jdt.core.dom.*;
import org.eclipse.jdt.core.dom.rewrite.ASTRewrite;
import org.eclipse.jdt.core.dom.rewrite.ListRewrite;
import org.eclipse.jdt.core.formatter.DefaultCodeFormatterConstants;
+import org.eclipse.jdt.core.dom.ITypeBinding;
public class ASTRewritingTypeDeclTest extends ASTRewritingTest {
@@ -1679,6 +1680,38 @@ public class ASTRewritingTypeDeclTest extends ASTRewritingTest {
}
-
+ // Bug 419057 - ITypeBinding#getModifiers() misses implicit "static" for class member interface
+ // https://bugs.eclipse.org/bugs/show_bug.cgi?id=419057
+ public void testBug419057a() throws Exception {
+ IPackageFragment pack1= this.sourceFolder.createPackageFragment("test1", false, null);
+ StringBuffer buf= new StringBuffer();
+ buf.append("package test1;\n");
+ buf.append("public class C {\n");
+ buf.append(" interface IC {}\n");
+ buf.append("}\n");
+ ICompilationUnit cu= pack1.createCompilationUnit("C.java", buf.toString(), false, null);
+ CompilationUnit astRoot= createAST(AST.JLS4, cu, true, false);
+ List types = astRoot.types();
+ TypeDeclaration typeDeclaration = (((TypeDeclaration) types.get(0)).getTypes())[0];
+ ITypeBinding iTypeBinding = typeDeclaration.resolveBinding();
+ assertTrue((iTypeBinding.getModifiers() & Modifier.STATIC) != 0);
+ }
+ public void testBug419057b() throws Exception {
+ IPackageFragment pack1= this.sourceFolder.createPackageFragment("test1", false, null);
+ StringBuffer buf= new StringBuffer();
+ buf.append("package test1;\n");
+ buf.append("public interface C {\n");
+ buf.append(" interface IC {}\n");
+ buf.append("}\n");
+ ICompilationUnit cu= pack1.createCompilationUnit("C.java", buf.toString(), false, null);
+ CompilationUnit astRoot= createAST(AST.JLS4, cu, true, false);
+ List types = astRoot.types();
+ TypeDeclaration outerTypeDeclaration = (TypeDeclaration) types.get(0);
+ TypeDeclaration memberTypeDeclaration = (outerTypeDeclaration.getTypes())[0];
+ ITypeBinding outerTypeBinding = outerTypeDeclaration.resolveBinding();
+ assertTrue((outerTypeBinding.getModifiers() & Modifier.STATIC) == 0);
+ ITypeBinding memberTypeBinding = memberTypeDeclaration.resolveBinding();
+ assertTrue((memberTypeBinding.getModifiers() & Modifier.STATIC) != 0);
+ }
}
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/ClassScope.java b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/ClassScope.java
index ced2952dd0..c4c603fffe 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/ClassScope.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/ClassScope.java
@@ -441,6 +441,8 @@ public class ClassScope extends Scope {
problemReporter().nonStaticContextForEnumMemberType(sourceType);
else
modifiers |= ClassFileConstants.AccStatic;
+ } else if (sourceType.isInterface()) {
+ modifiers |= ClassFileConstants.AccStatic; // 8.5.1
}
} else if (sourceType.isLocalType()) {
if (sourceType.isEnum()) {

Back to the top