Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKalyan Prasad Tatavarthi2020-07-07 12:22:44 +0000
committerKalyan Prasad Tatavarthi2020-07-15 12:25:15 +0000
commitd4dd2c08f335f58c58ceac6457aab5c0859ce7a3 (patch)
treeca8d3d93ebe4dca24aa833102c7e8b1ca61fb3c2
parentedb49b82dfdf5c2cd9039afb77b8c97a9b2a4e7a (diff)
downloadeclipse.jdt.core-d4dd2c08f335f58c58ceac6457aab5c0859ce7a3.tar.gz
eclipse.jdt.core-d4dd2c08f335f58c58ceac6457aab5c0859ce7a3.tar.xz
eclipse.jdt.core-d4dd2c08f335f58c58ceac6457aab5c0859ce7a3.zip
Bug 565015 - [14] Creating a Record within a Record gives an errorI20200715-1800
Change-Id: Idceb52f8b76ba980382beb752433784e3bed6251 Signed-off-by: Kalyan Prasad Tatavarthi <kalyan_prasad@in.ibm.com>
-rw-r--r--org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CreateMembersTests.java48
-rw-r--r--org.eclipse.jdt.core.tests.model/workspace/CreateMembers/src/OuterRecord.java2
-rw-r--r--org.eclipse.jdt.core.tests.model/workspace/CreateMembers/src/testBug565015/PkgRecord.java4
-rw-r--r--org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/CreateTypeMemberOperation.java5
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;
}

Back to the top