diff options
author | Jay Arthanareeswaran | 2020-06-30 06:29:30 +0000 |
---|---|---|
committer | Jay Arthanareeswaran | 2020-06-30 06:29:30 +0000 |
commit | 93ac30f436978352e22695d4762bbab4f260dbeb (patch) | |
tree | 08f7ad10609059205a25d6c93f2c051c25e49ca1 | |
parent | b1726cc34dd20361deadb6957c48231603ab6c09 (diff) | |
download | eclipse.jdt.core-93ac30f436978352e22695d4762bbab4f260dbeb.tar.gz eclipse.jdt.core-93ac30f436978352e22695d4762bbab4f260dbeb.tar.xz eclipse.jdt.core-93ac30f436978352e22695d4762bbab4f260dbeb.zip |
implicit constructors
Change-Id: I26008d29f42084e813e334516d5fd3fb9947fd5f
Signed-off-by: Jay Arthanareeswaran <jarthana@in.ibm.com>
2 files changed, 32 insertions, 0 deletions
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/RecordsElementTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/RecordsElementTests.java index 07954c5336..ac12080b21 100644 --- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/RecordsElementTests.java +++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/RecordsElementTests.java @@ -22,6 +22,7 @@ import org.eclipse.jdt.core.ICompilationUnit; import org.eclipse.jdt.core.IField; import org.eclipse.jdt.core.IJavaElement; 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.tests.util.AbstractCompilerTest; @@ -120,6 +121,35 @@ public class RecordsElementTests extends AbstractJavaModelTests { comp = recordComponents[1]; assertEquals("type should be a record component", IJavaElement.FIELD, comp.getElementType()); assertEquals("incorrect element name", "x2", comp.getElementName()); + IMethod[] methods = types[0].getMethods(); + assertNotNull("should not be null", methods); + assertEquals("Incorret no of methods", 1, methods.length); + IMethod iMethod = methods[0]; + assertEquals("type should be a record component", IJavaElement.METHOD, iMethod.getElementType()); + assertEquals("incorrect element name", "Point", iMethod.getElementName()); + String[] parameterNames = iMethod.getParameterNames(); + assertEquals("parameters not matching", 2, parameterNames.length); + } + finally { + deleteProject("RecordsElement"); + } + } + public void test004() throws Exception { + try { + IJavaProject project = createJavaProject("RecordsElement"); + project.open(null); + String fileContent = "@SuppressWarnings(\"preview\")\n" + + "public record Point(int x1, int x2) {\n" + + "}\n"; + createFile( "/RecordsElement/src/X.java", fileContent); + ICompilationUnit unit = getCompilationUnit("/RecordsElement/src/X.java"); + IType[] types = unit.getTypes(); + assertEquals("Incorret no of types", 1, types.length); + assertTrue("type should be a record", types[0].isRecord()); + assertEquals("type should be a record", IJavaElement.TYPE, types[0].getElementType()); + IMethod[] methods = types[0].getMethods(); + assertNotNull("should not be null", methods); + assertEquals("Incorret no of methods", 0, methods.length); } finally { deleteProject("RecordsElement"); diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/compiler/SourceElementNotifier.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/compiler/SourceElementNotifier.java index 79305b88c9..4d49a65974 100644 --- a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/compiler/SourceElementNotifier.java +++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/compiler/SourceElementNotifier.java @@ -259,6 +259,8 @@ protected void notifySourceElementRequestor(AbstractMethodDeclaration methodDecl this.visitIfNeeded(methodDeclaration); return; } + if ((methodDeclaration.bits & org.eclipse.jdt.internal.compiler.ast.ASTNode.IsImplicit) != 0) + return; if (methodDeclaration.isDefaultConstructor()) { if (this.reportReferenceInfo) { |