diff options
author | Stephan Herrmann | 2017-04-27 21:01:50 +0000 |
---|---|---|
committer | Stephan Herrmann | 2017-04-30 12:14:59 +0000 |
commit | 74f094e682457684863099ae753f6716dd343b95 (patch) | |
tree | 67668b28fa0b7f9f013764cc141c948469f37ad5 | |
parent | fb4d177db69da39e5efa5b655719e1b5d5dc1fe3 (diff) | |
download | eclipse.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.java | 22 | ||||
-rw-r--r-- | org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/NamedMember.java | 8 |
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) { |