diff options
author | ANIRBAN CHAKRABORTY | 2013-11-05 05:08:50 +0000 |
---|---|---|
committer | ssankaran | 2013-11-05 05:08:50 +0000 |
commit | c33f41f43558cbfed253266a4a366ce7c1f4e32c (patch) | |
tree | 1c028af17976838022288f6722df5a24874c25c0 | |
parent | bdfd3905be75efba7f9a34392ffdab769337f246 (diff) | |
download | eclipse.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
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()) { |