Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStephan Herrmann2017-04-27 21:01:50 +0000
committerStephan Herrmann2017-04-30 12:14:59 +0000
commit74f094e682457684863099ae753f6716dd343b95 (patch)
tree67668b28fa0b7f9f013764cc141c948469f37ad5
parentfb4d177db69da39e5efa5b655719e1b5d5dc1fe3 (diff)
downloadeclipse.jdt.core-74f094e682457684863099ae753f6716dd343b95.tar.gz
eclipse.jdt.core-74f094e682457684863099ae753f6716dd343b95.tar.xz
eclipse.jdt.core-74f094e682457684863099ae753f6716dd343b95.zip
Bug 381503: [dom] ASTParser.createBindings(..) answers a type binding
for a constructor Change-Id: Ief0990553dfa5461376daac5742b1275add7457d
-rw-r--r--org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverterBugsTest.java22
-rw-r--r--org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/NamedMember.java8
2 files changed, 26 insertions, 4 deletions
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverterBugsTest.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverterBugsTest.java
index e0eb04e64a..9cf6c08efb 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverterBugsTest.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverterBugsTest.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2000, 2015 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -19,7 +19,10 @@ import junit.framework.Test;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.jdt.core.IClassFile;
import org.eclipse.jdt.core.ICompilationUnit;
+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.JavaModelException;
import org.eclipse.jdt.core.WorkingCopyOwner;
import org.eclipse.jdt.core.dom.*;
@@ -1293,4 +1296,21 @@ public void testBug277204e() throws JavaModelException {
"Syntax error, insert \";\" to complete ClassBodyDeclarations\n",
result);
}
+
+// Verify that the binding for a constructor is a method binding
+public void testBug381503() throws CoreException, IOException {
+ try {
+ IJavaProject javaProject = createJavaProject("P", new String[] { "src" }, new String[] { "CONVERTER_JCL_LIB" }, "bin");
+ IType type = javaProject.findType("java.lang.IllegalMonitorStateException");
+ IMethod javaElement = type.getMethod("IllegalMonitorStateException", new String[]{});
+ ASTParser parser = ASTParser.newParser(AST.JLS8);
+ parser.setResolveBindings(true);
+ parser.setProject(javaProject);
+ IBinding[] bindings = parser.createBindings(new IJavaElement[] { javaElement }, null);
+ assertEquals("Wrong number of bindings", 1, bindings.length);
+ assertTrue("Wrong binding kind: "+bindings[0].getClass().getName(), bindings[0] instanceof IMethodBinding);
+ } finally {
+ deleteProject("P");
+ }
+}
}
diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/NamedMember.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/NamedMember.java
index ef819dfde5..166182fa38 100644
--- a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/NamedMember.java
+++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/NamedMember.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2004, 2012 IBM Corporation and others.
+ * Copyright (c) 2004, 2017 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -91,8 +91,10 @@ public abstract class NamedMember extends Member {
// selector
key.append('.');
- String selector = method.getElementName();
- key.append(selector);
+ if (!method.isConstructor()) { // empty selector for ctors, cf. BindingKeyResolver.consumeMethod()
+ String selector = method.getElementName();
+ key.append(selector);
+ }
// type parameters
if (forceOpen) {

Back to the top