diff options
author | Kalyan Prasad Tatavarthi | 2020-07-07 12:22:44 +0000 |
---|---|---|
committer | Kalyan Prasad Tatavarthi | 2020-07-15 12:25:15 +0000 |
commit | d4dd2c08f335f58c58ceac6457aab5c0859ce7a3 (patch) | |
tree | ca8d3d93ebe4dca24aa833102c7e8b1ca61fb3c2 | |
parent | edb49b82dfdf5c2cd9039afb77b8c97a9b2a4e7a (diff) | |
download | eclipse.jdt.core-d4dd2c08f335f58c58ceac6457aab5c0859ce7a3.tar.gz eclipse.jdt.core-d4dd2c08f335f58c58ceac6457aab5c0859ce7a3.tar.xz eclipse.jdt.core-d4dd2c08f335f58c58ceac6457aab5c0859ce7a3.zip |
Change-Id: Idceb52f8b76ba980382beb752433784e3bed6251
Signed-off-by: Kalyan Prasad Tatavarthi <kalyan_prasad@in.ibm.com>
4 files changed, 58 insertions, 1 deletions
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 f84241d7fd..95b645e750 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 @@ -220,4 +220,52 @@ public class CreateMembersTests extends AbstractJavaModelTests { javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, old); } } + + public void testBug565015_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", "", "OuterRecord.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 record OuterRecord() {\n" + + "\n" + + " record Point() {}\n" + + "}"; + assertSourceEquals("Unexpected source", expectedSource, type.getSource()); + } finally { + javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, old); + } + } + + public void testBug565015_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.ENABLED); + try { + ICompilationUnit compilationUnit = getCompilationUnit("CreateMembers", "src", "testBug565015", "PkgRecord.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 = + "package testBug565015;\n" + + "\n" + + "public record PkgRecord() {\n" + + "\n" + + " record Point() {}\n" + + "}"; + assertSourceEquals("Unexpected source", expectedSource, compilationUnit.getSource()); + } finally { + javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, old); + } + } } diff --git a/org.eclipse.jdt.core.tests.model/workspace/CreateMembers/src/OuterRecord.java b/org.eclipse.jdt.core.tests.model/workspace/CreateMembers/src/OuterRecord.java new file mode 100644 index 0000000000..a7f1c6ca22 --- /dev/null +++ b/org.eclipse.jdt.core.tests.model/workspace/CreateMembers/src/OuterRecord.java @@ -0,0 +1,2 @@ +public record OuterRecord() { +}
\ No newline at end of file diff --git a/org.eclipse.jdt.core.tests.model/workspace/CreateMembers/src/testBug565015/PkgRecord.java b/org.eclipse.jdt.core.tests.model/workspace/CreateMembers/src/testBug565015/PkgRecord.java new file mode 100644 index 0000000000..a10860127c --- /dev/null +++ b/org.eclipse.jdt.core.tests.model/workspace/CreateMembers/src/testBug565015/PkgRecord.java @@ -0,0 +1,4 @@ +package testBug565015; + +public record PkgRecord() { +}
\ No newline at end of file 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 3f48fc7c66..65a1e92ae5 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 @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2000, 2018 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 @@ -29,6 +29,7 @@ import org.eclipse.jdt.core.dom.ASTParser; import org.eclipse.jdt.core.dom.AnnotationTypeDeclaration; import org.eclipse.jdt.core.dom.CompilationUnit; import org.eclipse.jdt.core.dom.EnumDeclaration; +import org.eclipse.jdt.core.dom.RecordDeclaration; import org.eclipse.jdt.core.dom.SimpleName; import org.eclipse.jdt.core.dom.StructuralPropertyDescriptor; import org.eclipse.jdt.core.dom.TypeDeclaration; @@ -75,6 +76,8 @@ protected StructuralPropertyDescriptor getChildPropertyDescriptor(ASTNode parent return EnumDeclaration.BODY_DECLARATIONS_PROPERTY; case ASTNode.ANNOTATION_TYPE_DECLARATION: return AnnotationTypeDeclaration.BODY_DECLARATIONS_PROPERTY; + case ASTNode.RECORD_DECLARATION: + return RecordDeclaration.BODY_DECLARATIONS_PROPERTY; default: return TypeDeclaration.BODY_DECLARATIONS_PROPERTY; } |