diff options
author | Jay Arthanareeswaran | 2020-05-28 06:19:09 +0000 |
---|---|---|
committer | Jay Arthanareeswaran | 2020-05-29 15:46:43 +0000 |
commit | 20593908fba81601b46d2576abde81781d2bc542 (patch) | |
tree | 5fa1497b98a4eea7c9bd2bf80fc5ce70dc20a0c1 | |
parent | 90ae3ae71788fb03107dcd6c2ebc39d5c3f00108 (diff) | |
download | eclipse.jdt.core-20593908fba81601b46d2576abde81781d2bc542.tar.gz eclipse.jdt.core-20593908fba81601b46d2576abde81781d2bc542.tar.xz eclipse.jdt.core-20593908fba81601b46d2576abde81781d2bc542.zip |
Bug 563622 - [14] Using Enclosing type in Record wizard fails to createI20200601-0140I20200531-1800I20200531-0600I20200530-0600
record
Change-Id: I0affb685c831a633601f2631e349ef6a578fecc4
Signed-off-by: Jay Arthanareeswaran <jarthana@in.ibm.com>
15 files changed, 73 insertions, 16 deletions
diff --git a/org.eclipse.jdt.apt.core/src/org/eclipse/jdt/apt/core/internal/env/BaseProcessorEnv.java b/org.eclipse.jdt.apt.core/src/org/eclipse/jdt/apt/core/internal/env/BaseProcessorEnv.java index 26fad6e88d..e0b7dab71c 100644 --- a/org.eclipse.jdt.apt.core/src/org/eclipse/jdt/apt/core/internal/env/BaseProcessorEnv.java +++ b/org.eclipse.jdt.apt.core/src/org/eclipse/jdt/apt/core/internal/env/BaseProcessorEnv.java @@ -85,8 +85,9 @@ import com.sun.mirror.util.Types; */ public class BaseProcessorEnv implements AnnotationProcessorEnvironment { + private static final int JLS_LATEST = AST.JLS14; static{ - final AST ast = AST.newAST(AST.JLS13, true); + final AST ast = AST.newAST(JLS_LATEST, true); EMPTY_AST_UNIT = ast.newCompilationUnit(); } public static final CompilationUnit EMPTY_AST_UNIT; @@ -508,7 +509,7 @@ public class BaseProcessorEnv implements AnnotationProcessorEnvironment } final BindingRequestor requestor = new BindingRequestor(); - final ASTParser parser = ASTParser.newParser(AST.JLS13); + final ASTParser parser = ASTParser.newParser(JLS_LATEST); parser.setResolveBindings(true); parser.setBindingsRecovery(true); parser.setProject(_javaProject); @@ -719,7 +720,7 @@ public class BaseProcessorEnv implements AnnotationProcessorEnvironment if( astUnit != null ) return astUnit; else{ // Note: very expensive operation. we are re-compiling a file with binding information. - final ASTParser parser = ASTParser.newParser(AST.JLS13); + final ASTParser parser = ASTParser.newParser(JLS_LATEST); parser.setResolveBindings(true); parser.setBindingsRecovery(true); parser.setSource(unit); @@ -868,7 +869,7 @@ public class BaseProcessorEnv implements AnnotationProcessorEnvironment String bogusKey = BindingKey.createTypeBindingKey("java.lang.Object"); //$NON-NLS-1$ String[] keys = new String[] {bogusKey}; - ASTParser p = ASTParser.newParser( AST.JLS13 ); + ASTParser p = ASTParser.newParser( JLS_LATEST ); p.setResolveBindings(true); p.setBindingsRecovery(true); p.setProject( javaProject ); @@ -898,7 +899,7 @@ public class BaseProcessorEnv implements AnnotationProcessorEnvironment } CompilationUnitRequestor requestor = new CompilationUnitRequestor(); - ASTParser p = ASTParser.newParser( AST.JLS13 ); + ASTParser p = ASTParser.newParser( JLS_LATEST ); p.setResolveBindings(true); p.setBindingsRecovery(true); p.setProject( javaProject ); diff --git a/org.eclipse.jdt.apt.tests/src/org/eclipse/jdt/apt/tests/ReadAnnotationTests2.java b/org.eclipse.jdt.apt.tests/src/org/eclipse/jdt/apt/tests/ReadAnnotationTests2.java index 0e787221cd..a57a7d2222 100644 --- a/org.eclipse.jdt.apt.tests/src/org/eclipse/jdt/apt/tests/ReadAnnotationTests2.java +++ b/org.eclipse.jdt.apt.tests/src/org/eclipse/jdt/apt/tests/ReadAnnotationTests2.java @@ -187,7 +187,7 @@ public class ReadAnnotationTests2 extends BuilderTests { } final BindingRequestor requestor = new BindingRequestor(); - final ASTParser parser = ASTParser.newParser(AST.JLS13); + final ASTParser parser = ASTParser.newParser(AST.JLS14); parser.setResolveBindings(true); parser.setProject(javaProj); parser.setIgnoreMethodBodies(true); diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverter13Test.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverter13Test.java index fde8f08976..2a99de1e3a 100644 --- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverter13Test.java +++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverter13Test.java @@ -68,6 +68,7 @@ public class ASTConverter13Test extends ConverterTestSetup { return buildModelTestSuite(ASTConverter13Test.class); } + @SuppressWarnings("deprecation") static int getAST13() { return AST.JLS13; } @@ -398,6 +399,7 @@ public class ASTConverter13Test extends ConverterTestSetup { } } // Moved over from ASTConverter9Test + @SuppressWarnings("deprecation") public void _testBug531714_015() throws CoreException { // saw NPE in SwitchExpression.resolveType(SwitchExpression.java:423) if (!isJRE13) { diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/AbstractJavaModelTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/AbstractJavaModelTests.java index be683c5bcd..8b0968a2ab 100644 --- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/AbstractJavaModelTests.java +++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/AbstractJavaModelTests.java @@ -156,6 +156,7 @@ public abstract class AbstractJavaModelTests extends SuiteOfTestCases { /** * Internal synonym for constant AST.JSL13 * to alleviate deprecation warnings once AST.JLS13 is deprecated in future. + * @deprecated */ protected static final int AST_INTERNAL_JLS13 = AST.JLS13; diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompilationUnitTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompilationUnitTests.java index 2d3db19d74..0ae07590b1 100644 --- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompilationUnitTests.java +++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompilationUnitTests.java @@ -61,7 +61,7 @@ public void setUpSuite() throws Exception { super.setUpSuite(); final String compliance = "1.5"; //$NON-NLS-1$ - this.testProject = createJavaProject("P", new String[] {"src"}, new String[] {getExternalJCLPathString(compliance)}, "bin", compliance); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ + this.testProject = createJavaProject("P", new String[] {"src"}, new String[] {"JCL15_LIB"}, "bin", compliance); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ createFolder("/P/src/p"); createFile( "/P/src/p/X.java", diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CreateMembersTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CreateMembersTests.java index 4c1f690843..f84241d7fd 100644 --- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CreateMembersTests.java +++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CreateMembersTests.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2000, 2009 IBM Corporation and others. + * Copyright (c) 2000, 2020 IBM Corporation and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 @@ -18,8 +18,10 @@ import junit.framework.Test; import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.jdt.core.ICompilationUnit; import org.eclipse.jdt.core.IField; +import org.eclipse.jdt.core.IJavaProject; import org.eclipse.jdt.core.IMethod; import org.eclipse.jdt.core.IType; +import org.eclipse.jdt.core.JavaCore; import org.eclipse.jdt.core.JavaModelException; public class CreateMembersTests extends AbstractJavaModelTests { @@ -43,7 +45,7 @@ public class CreateMembersTests extends AbstractJavaModelTests { @Override public void setUpSuite() throws Exception { super.setUpSuite(); - setUpJavaProject("CreateMembers", "1.5"); + setUpJavaProject("CreateMembers", "14"); } @Override public void tearDownSuite() throws Exception { @@ -171,4 +173,51 @@ public class CreateMembersTests extends AbstractJavaModelTests { "Invalid sibling: E1 [in E [in E.java [in <default> [in src [in CreateMembers]]]]]", expected); } + public void testBug563622_1() throws JavaModelException { + IJavaProject javaProject = getJavaProject("CreateMembers"); + String old = javaProject.getOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, true); + javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, JavaCore.ENABLED); + try { + ICompilationUnit compilationUnit = getCompilationUnit("CreateMembers", "src", "", "Outer.java"); + assertNotNull("No compilation unit", compilationUnit); + IType[] types = compilationUnit.getTypes(); + assertNotNull("No types", types); + assertEquals("Wrong size", 1, types.length); + IType type = types[0]; + type.createType("record Point() {}", null, true, null); + String expectedSource = + "public class Outer {\n" + + "\n" + + " record Point() {}\n" + + "}"; + assertSourceEquals("Unexpected source", expectedSource, type.getSource()); + } finally { + javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, old); + } + } + public void testBug563622_2() throws JavaModelException { + IJavaProject javaProject = getJavaProject("CreateMembers"); + String old = javaProject.getOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, true); + javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, JavaCore.DISABLED); + JavaModelException expected = null; + try { + ICompilationUnit compilationUnit = getCompilationUnit("CreateMembers", "src", "", "Outer.java"); + assertNotNull("No compilation unit", compilationUnit); + IType[] types = compilationUnit.getTypes(); + assertNotNull("No types", types); + assertEquals("Wrong size", 1, types.length); + IType type = types[0]; + try { + type.createType("record Point() {}", null, true, null); + } catch (JavaModelException e) { + expected = e; + } + assertExceptionEquals( + "Unexpected exception", + "Invalid contents specified", + expected); + } finally { + javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, old); + } + } } diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ReconcilerTests9.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ReconcilerTests9.java index 75f3d628dc..355c4427ed 100644 --- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ReconcilerTests9.java +++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ReconcilerTests9.java @@ -43,7 +43,7 @@ public class ReconcilerTests9 extends ModifyingResourceTests { protected ICompilationUnit workingCopy; protected ProblemRequestor problemRequestor; - /*package*/ static final int JLS_LATEST = AST.JLS13; + /*package*/ static final int JLS_LATEST = AST.JLS14; /** */ diff --git a/org.eclipse.jdt.core.tests.model/workspace/CreateMembers/src/Outer.java b/org.eclipse.jdt.core.tests.model/workspace/CreateMembers/src/Outer.java new file mode 100644 index 0000000000..2b076f3923 --- /dev/null +++ b/org.eclipse.jdt.core.tests.model/workspace/CreateMembers/src/Outer.java @@ -0,0 +1,2 @@ +public class Outer { +}
\ No newline at end of file diff --git a/org.eclipse.jdt.core.tests.performance/src/org/eclipse/jdt/core/tests/performance/SecondaryTypesPerformanceTest.java b/org.eclipse.jdt.core.tests.performance/src/org/eclipse/jdt/core/tests/performance/SecondaryTypesPerformanceTest.java index 819138b2c3..48d06f7016 100644 --- a/org.eclipse.jdt.core.tests.performance/src/org/eclipse/jdt/core/tests/performance/SecondaryTypesPerformanceTest.java +++ b/org.eclipse.jdt.core.tests.performance/src/org/eclipse/jdt/core/tests/performance/SecondaryTypesPerformanceTest.java @@ -84,7 +84,7 @@ public class SecondaryTypesPerformanceTest extends PerformanceTestCase { classpathList.add(testScratchArea); for (int i = 0; i<10; ++i) { - ASTParser parser = ASTParser.newParser(AST.JLS13); + ASTParser parser = ASTParser.newParser(AST.JLS14); parser.setResolveBindings(true); parser.setStatementsRecovery(true); parser.setBindingsRecovery(true); diff --git a/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/AST.java b/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/AST.java index 6a5ef3dfcd..657b0ef602 100644 --- a/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/AST.java +++ b/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/AST.java @@ -311,6 +311,7 @@ public final class AST { * </p> * * @since 3.20 + * @deprecated Clients should use the {@link #JLS_Latest} AST API instead. */ public static final int JLS13 = 13; diff --git a/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/rewrite/ImportRewrite.java b/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/rewrite/ImportRewrite.java index 9378d3ba7f..2e423f8145 100644 --- a/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/rewrite/ImportRewrite.java +++ b/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/rewrite/ImportRewrite.java @@ -1315,7 +1315,7 @@ public final class ImportRewrite { CompilationUnit usedAstRoot= this.astRoot; if (usedAstRoot == null) { - ASTParser parser= ASTParser.newParser(AST.JLS13); + ASTParser parser= ASTParser.newParser(AST.JLS14); parser.setSource(this.compilationUnit); parser.setFocalPosition(0); // reduced AST parser.setResolveBindings(false); diff --git a/org.eclipse.jdt.core/formatter/org/eclipse/jdt/internal/formatter/SpacePreparator.java b/org.eclipse.jdt.core/formatter/org/eclipse/jdt/internal/formatter/SpacePreparator.java index fe715a3729..32b7bf7c35 100644 --- a/org.eclipse.jdt.core/formatter/org/eclipse/jdt/internal/formatter/SpacePreparator.java +++ b/org.eclipse.jdt.core/formatter/org/eclipse/jdt/internal/formatter/SpacePreparator.java @@ -435,6 +435,7 @@ public class SpacePreparator extends ASTVisitor { return true; } + @SuppressWarnings("deprecation") @Override public boolean visit(SwitchCase node) { if (node.getAST().apiLevel() > AST.JLS13 && node.isSwitchLabeledRule()) { diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/CreateElementInCUOperation.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/CreateElementInCUOperation.java index d277903abd..d1635908a7 100644 --- a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/CreateElementInCUOperation.java +++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/CreateElementInCUOperation.java @@ -267,7 +267,7 @@ public abstract class CreateElementInCUOperation extends JavaModelOperation { // ensure cu is consistent (noop if already consistent) cu.makeConsistent(this.progressMonitor); // create an AST for the compilation unit - ASTParser parser = ASTParser.newParser(AST.JLS13); + ASTParser parser = ASTParser.newParser(AST.JLS14); parser.setSource(cu); return (CompilationUnit) parser.createAST(this.progressMonitor); } diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/CreateTypeMemberOperation.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/CreateTypeMemberOperation.java index 68b331de0b..3f48fc7c66 100644 --- a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/CreateTypeMemberOperation.java +++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/CreateTypeMemberOperation.java @@ -83,7 +83,7 @@ protected StructuralPropertyDescriptor getChildPropertyDescriptor(ASTNode parent protected ASTNode generateElementAST(ASTRewrite rewriter, ICompilationUnit cu) throws JavaModelException { if (this.createdNode == null) { this.source = removeIndentAndNewLines(this.source, cu); - ASTParser parser = ASTParser.newParser(AST.JLS13); + ASTParser parser = ASTParser.newParser(AST.JLS14); parser.setSource(this.source.toCharArray()); parser.setProject(getCompilationUnit().getJavaProject()); parser.setKind(ASTParser.K_CLASS_BODY_DECLARATIONS); @@ -170,7 +170,7 @@ protected String generateSyntaxIncorrectAST() { buff.append(lineSeparator + " public class A {" + lineSeparator); //$NON-NLS-1$ buff.append(this.source); buff.append(lineSeparator).append('}'); - ASTParser parser = ASTParser.newParser(AST.JLS13); + ASTParser parser = ASTParser.newParser(AST.JLS14); parser.setSource(buff.toString().toCharArray()); CompilationUnit compilationUnit = (CompilationUnit) parser.createAST(null); TypeDeclaration typeDeclaration = (TypeDeclaration) compilationUnit.types().iterator().next(); diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/DeleteElementsOperation.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/DeleteElementsOperation.java index a5a61f1e4f..c119a55d24 100644 --- a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/DeleteElementsOperation.java +++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/DeleteElementsOperation.java @@ -84,7 +84,7 @@ public class DeleteElementsOperation extends MultiOperation { } private void initASTParser() { - this.parser = ASTParser.newParser(AST.JLS13); + this.parser = ASTParser.newParser(AST.JLS14); } /** |