Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStephan Herrmann2021-05-04 21:42:23 +0000
committerStephan Herrmann2021-05-04 23:25:36 +0000
commit24e9db974f6280483b90a8444f24075c2cd08cc3 (patch)
treec05a7aaa2d8df591edcee1d7b3fdaadb60d28946 /org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt
parent45518326ca0c735356fc3f42ab0bcd89413b0a78 (diff)
downloadorg.eclipse.objectteams-24e9db974f6280483b90a8444f24075c2cd08cc3.tar.gz
org.eclipse.objectteams-24e9db974f6280483b90a8444f24075c2cd08cc3.tar.xz
org.eclipse.objectteams-24e9db974f6280483b90a8444f24075c2cd08cc3.zip
Update jdt.core to I20210503-1800
incl a few adjustments / regression fixes
Diffstat (limited to 'org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt')
-rw-r--r--org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverter14Test.java1
-rw-r--r--org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverterAST8Test.java21
-rw-r--r--org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTTest.java2
-rw-r--r--org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/AbstractASTTests.java4
-rw-r--r--org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/BatchASTCreationTests.java2
-rw-r--r--org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/TypeBindingTests308.java13
-rw-r--r--org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/formatter/FormatterBugsTests.java8
-rw-r--r--org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/AbstractJavaModelCompletionTests.java2
-rw-r--r--org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/AbstractJavaModelTests.java7
-rw-r--r--org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/AllJavaModelTests.java6
-rw-r--r--org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ClassFileTests.java4
-rw-r--r--org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ClasspathInitializerTests.java2
-rw-r--r--org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ClasspathTests.java2
-rw-r--r--org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CodeCorrectionTestsRequestor.java4
-rw-r--r--org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionContextTests.java6
-rw-r--r--org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionTests.java93
-rw-r--r--org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionTests18.java1017
-rw-r--r--org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionTests2.java64
-rw-r--r--org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionTests_1_5.java79
-rw-r--r--org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CopyMoveResourcesTests.java1
-rw-r--r--org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CopyMoveTests.java1
-rw-r--r--org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ExternalAnnotations18Test.java2
-rw-r--r--org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaElementDeltaTests.java122
-rw-r--r--org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaModelManagerTests.java2
-rw-r--r--org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchBugs16Tests.java34
-rw-r--r--org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/NullAnnotationModelTests.java16
-rw-r--r--org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/OverflowingCacheTests.java2
-rw-r--r--org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ReconcilerTests16.java199
-rw-r--r--org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/SearchTests.java2
-rw-r--r--org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/TypeHierarchyTests.java30
-rw-r--r--org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/WorkingCopyOwnerTests.java2
-rw-r--r--org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/WorkingCopyTests.java2
-rw-r--r--org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/nd/BTreeTests.java2
-rw-r--r--org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/rewrite/describing/ASTRewritingInstanceOfPatternExpressionTest.java6
-rw-r--r--org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/rewrite/describing/ASTRewritingRecordDeclarationTest.java2
-rw-r--r--org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/rewrite/describing/ASTRewritingStatementsTest.java84
-rw-r--r--org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/rewrite/describing/ASTRewritingSwitchExpressionsTest.java6
-rw-r--r--org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/rewrite/describing/ASTRewritingTest.java1
38 files changed, 1697 insertions, 156 deletions
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverter14Test.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverter14Test.java
index 3bcbbf8bc..f81893be9 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverter14Test.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverter14Test.java
@@ -56,6 +56,7 @@ public class ASTConverter14Test extends ConverterTestSetup {
public void setUpSuite() throws Exception {
super.setUpSuite();
this.ast = AST.newAST(getAST14(), false);
+ this.currentProject = getJavaProject("Converter14");
this.currentProject.setOption(JavaCore.COMPILER_COMPLIANCE, JavaCore.VERSION_14);
this.currentProject.setOption(JavaCore.COMPILER_SOURCE, JavaCore.VERSION_14);
this.currentProject.setOption(JavaCore.COMPILER_CODEGEN_TARGET_PLATFORM, JavaCore.VERSION_14);
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverterAST8Test.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverterAST8Test.java
index 5852b1792..5c4b222da 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverterAST8Test.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverterAST8Test.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2011, 2019 IBM Corporation and others.
+ * Copyright (c) 2011, 2021 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -9803,4 +9803,23 @@ public class ASTConverterAST8Test extends ConverterTestSetup {
assertEquals("Wrong first type", "LtestBug496596/Test~Cmp;", typeBounds[0].getKey());
assertEquals("Wrong second type", "LtestBug496596/Test~Serial;", typeBounds[1].getKey());
}
+
+ /**
+ * byte i; ==> VariableDeclarationFragment
+ */
+ public void test0722() throws JavaModelException {
+ ICompilationUnit sourceUnit = getCompilationUnit("Converter" , "src", "test0722", "Test.java"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
+
+ ASTNode result = runConversion(getJLS8(), sourceUnit, true);
+ ASTNode node = getASTNode((CompilationUnit) result, 0, 0);
+ assertNotNull("Expression should not be null", node); //$NON-NLS-1$
+ assertTrue("The node is not a FieldDeclaration", node instanceof FieldDeclaration); //$NON-NLS-1$
+ VariableDeclarationFragment frag = (VariableDeclarationFragment) ((FieldDeclaration) node).fragments().get(0);
+
+ Name name = frag.getName();
+ Object constant = name.resolveConstantExpressionValue();
+ assertNotNull("No constant", constant);
+ assertEquals("Wrong value", "12", String.valueOf(constant));
+
+ }
} \ No newline at end of file
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTTest.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTTest.java
index 76f620236..9f8115916 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTTest.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTTest.java
@@ -1003,7 +1003,7 @@ public class ASTTest extends org.eclipse.jdt.core.tests.junit.extension.TestCase
}
}
- abstract class Property {
+ abstract static class Property {
/**
* Indicates whether this property is compulsory, in that every node
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/AbstractASTTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/AbstractASTTests.java
index 5f7303a88..38d57d78e 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/AbstractASTTests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/AbstractASTTests.java
@@ -106,7 +106,7 @@ public class AbstractASTTests extends ModifyingResourceTests implements DefaultM
* Removes the *start* and *end* markers from the given source
* and remembers the positions.
*/
- public class MarkerInfo {
+ public static class MarkerInfo {
String path;
String source;
@@ -204,7 +204,7 @@ public class AbstractASTTests extends ModifyingResourceTests implements DefaultM
}
- public class BindingRequestor extends ASTRequestor {
+ public static class BindingRequestor extends ASTRequestor {
HashMap bindings = new HashMap();
public void acceptBinding(String bindingKey, IBinding binding) {
this.bindings.put(bindingKey, binding);
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/BatchASTCreationTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/BatchASTCreationTests.java
index 0e632fda2..a6bf3fc53 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/BatchASTCreationTests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/BatchASTCreationTests.java
@@ -49,7 +49,7 @@ public class BatchASTCreationTests extends AbstractASTTests {
*/
/*package*/ static final int JLS3_INTERNAL = AST.JLS3;
- public class TestASTRequestor extends ASTRequestor {
+ public static class TestASTRequestor extends ASTRequestor {
public ArrayList asts = new ArrayList();
public void acceptAST(ICompilationUnit source, CompilationUnit ast) {
this.asts.add(ast);
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/TypeBindingTests308.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/TypeBindingTests308.java
index 76cab3cad..e6820534d 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/TypeBindingTests308.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/TypeBindingTests308.java
@@ -42,6 +42,7 @@ import org.eclipse.jdt.core.dom.ExpressionStatement;
import org.eclipse.jdt.core.dom.FieldDeclaration;
import org.eclipse.jdt.core.dom.IAnnotationBinding;
import org.eclipse.jdt.core.dom.IBinding;
+import org.eclipse.jdt.core.dom.IMemberValuePairBinding;
import org.eclipse.jdt.core.dom.IMethodBinding;
import org.eclipse.jdt.core.dom.ITypeBinding;
import org.eclipse.jdt.core.dom.IVariableBinding;
@@ -2203,7 +2204,17 @@ public class TypeBindingTests308 extends ConverterTestSetup {
ITypeBinding typeBinding = typeDecl.resolveBinding();
IAnnotationBinding[] annotations = typeBinding.getAnnotations()[0].getAnnotationType().getAnnotations();
assertTrue("Should be 2", annotations.length == 2);
- assertEquals("Annotation mismatch", "@Target(value = {public static final java.lang.annotation.ElementType TYPE_USE})", annotations[0].toString());
+ IMemberValuePairBinding[] allMemberValuePairs = annotations[0].getAllMemberValuePairs();
+ assertEquals("Annotations mismatch", 1, allMemberValuePairs.length);
+ Object value= allMemberValuePairs[0].getValue();
+ if(value instanceof Object[]) {
+ Object[] valueArr = (Object[]) value;
+ assertEquals("Annotations mismatch", 1, valueArr.length);
+ assertEquals("Annotations mismatch", "public static final java.lang.annotation.ElementType TYPE_USE", valueArr[0].toString());
+ } else {
+ assertEquals("Annotation mismatch", "@Target(value = {public static final java.lang.annotation.ElementType TYPE_USE})", annotations[0].toString());
+ }
+
assertEquals("Annotation mismatch", "@Deprecated()", annotations[1].toString());
} finally {
removeLibrary(javaProject, jarName, srcName);
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/formatter/FormatterBugsTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/formatter/FormatterBugsTests.java
index c38acfeb3..094bba4f4 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/formatter/FormatterBugsTests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/formatter/FormatterBugsTests.java
@@ -13277,4 +13277,12 @@ public void testBug570220() {
" };\n" +
"}");
}
+
+public void _testBug562818() {
+ String source = "public Record {}\n";
+ formatSource(source,
+ "public Record {\n" +
+ "}",
+ CodeFormatter.K_RECORD_BODY_DECLARATIONS);
+}
}
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/AbstractJavaModelCompletionTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/AbstractJavaModelCompletionTests.java
index d0215dbb1..bf35c1227 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/AbstractJavaModelCompletionTests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/AbstractJavaModelCompletionTests.java
@@ -31,7 +31,7 @@ import junit.framework.*;
public abstract class AbstractJavaModelCompletionTests extends AbstractJavaModelTests implements RelevanceConstants {
public static List COMPLETION_SUITES = null;
protected static IJavaProject COMPLETION_PROJECT;
- protected class CompletionResult {
+ protected static class CompletionResult {
public String proposals;
public String context;
public int cursorLocation;
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/AbstractJavaModelTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/AbstractJavaModelTests.java
index 23e0a733e..0e8e8519e 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/AbstractJavaModelTests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/AbstractJavaModelTests.java
@@ -222,7 +222,7 @@ public abstract class AbstractJavaModelTests extends SuiteOfTestCases {
/**
* Delta listener
*/
- protected class DeltaListener implements IElementChangedListener, IResourceChangeListener {
+ protected static class DeltaListener implements IElementChangedListener, IResourceChangeListener {
/**
* Deltas received from the java model. See
* <code>#startDeltas</code> and
@@ -252,7 +252,7 @@ public abstract class AbstractJavaModelTests extends SuiteOfTestCases {
copy[this.deltas.length]= event.getDelta();
this.deltas= copy;
- new Throwable("Caller of IElementChangedListener#elementChanged").printStackTrace(new PrintStream(this.stackTraces));
+ new Throwable("Caller of IElementChangedListener#elementChanged with delta " + event.getDelta()).printStackTrace(new PrintStream(this.stackTraces));
}
}
public synchronized CompilationUnit getCompilationUnitAST(ICompilationUnit workingCopy) {
@@ -1553,6 +1553,9 @@ public abstract class AbstractJavaModelTests extends SuiteOfTestCases {
protected IJavaProject createJava16Project(String name, String[] srcFolders) throws CoreException {
return createJava9ProjectWithJREAttributes(name, srcFolders, null, "16");
}
+ protected IJavaProject createJava16Project(String name) throws CoreException {
+ return createJava9ProjectWithJREAttributes(name, new String[]{"src"}, null, "16");
+ }
protected IJavaProject createJava9ProjectWithJREAttributes(String name, String[] srcFolders, IClasspathAttribute[] attributes) throws CoreException {
return createJava9ProjectWithJREAttributes(name, srcFolders, attributes, "9");
}
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/AllJavaModelTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/AllJavaModelTests.java
index 64e647848..ddc31e058 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/AllJavaModelTests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/AllJavaModelTests.java
@@ -19,7 +19,6 @@ import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import org.eclipse.jdt.core.tests.junit.extension.TestCase;
-import org.eclipse.jdt.core.tests.nd.RunIndexTests;
import junit.framework.Test;
import junit.framework.TestSuite;
@@ -66,8 +65,9 @@ private static Class[] getAllTestClasses() {
// Java search tests
RunJavaSearchTests.class,
- // Testss for the new index
- RunIndexTests.class,
+ // Tests for the new index - disabled because the index is not used anymore
+ // See bug 572976 and bug 544898
+ // RunIndexTests.class,
// Working copy tests
WorkingCopyTests.class,
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ClassFileTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ClassFileTests.java
index 73ae6270f..d9671e39f 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ClassFileTests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ClassFileTests.java
@@ -53,7 +53,7 @@ public static Test suite() {
@Override
public void setUpSuite() throws Exception {
super.setUpSuite();
- IJavaProject javaProject = createJavaProject("P", new String[0], new String[] {"JCL15_LIB", "/P/lib"}, "", JavaCore.VERSION_1_5);
+ IJavaProject javaProject = createJavaProject("P", new String[0], new String[] {"JCL15_LIB", "/P/lib"}, "", JavaCore.VERSION_9);
String[] pathAndContents = new String[] {
"nongeneric/A.java",
"package nongeneric;\n" +
@@ -437,7 +437,7 @@ public void testAnnotations16() throws JavaModelException {
public void testAnnotations17() throws JavaModelException {
IType type = this.jarRoot.getPackageFragment("annotated").getOrdinaryClassFile("Y.class").getType();
assertAnnotationsEqual(
- "@java.lang.annotation.Target({java.lang.annotation.ElementType.TYPE, java.lang.annotation.ElementType.FIELD, java.lang.annotation.ElementType.METHOD, java.lang.annotation.ElementType.PARAMETER, java.lang.annotation.ElementType.CONSTRUCTOR, java.lang.annotation.ElementType.LOCAL_VARIABLE, java.lang.annotation.ElementType.ANNOTATION_TYPE, java.lang.annotation.ElementType.PACKAGE})\n" +
+ "@java.lang.annotation.Target({java.lang.annotation.ElementType.PACKAGE, java.lang.annotation.ElementType.TYPE, java.lang.annotation.ElementType.ANNOTATION_TYPE, java.lang.annotation.ElementType.METHOD, java.lang.annotation.ElementType.CONSTRUCTOR, java.lang.annotation.ElementType.FIELD, java.lang.annotation.ElementType.LOCAL_VARIABLE, java.lang.annotation.ElementType.PARAMETER})\n" +
"@java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE)\n" +
"@java.lang.Deprecated\n" +
"@java.lang.annotation.Documented\n" +
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ClasspathInitializerTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ClasspathInitializerTests.java
index c64fbbea8..6fb28038e 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ClasspathInitializerTests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ClasspathInitializerTests.java
@@ -62,7 +62,7 @@ public static class DefaultVariableInitializer implements VariablesInitializer.I
// Simple container initializer, which keeps setting container to null
// (30920 - stackoverflow when setting container to null)
-public class NullContainerInitializer implements ContainerInitializer.ITestInitializer {
+public static class NullContainerInitializer implements ContainerInitializer.ITestInitializer {
public boolean hasRun = false;
@Override
public boolean allowFailureContainer() {
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ClasspathTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ClasspathTests.java
index 91a87236f..b7923f81d 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ClasspathTests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ClasspathTests.java
@@ -85,7 +85,7 @@ public class ClasspathTests extends ModifyingResourceTests {
private static final IClasspathAttribute ATTR_IGNORE_OPTIONAL_PROBLEMS_TRUE = JavaCore.newClasspathAttribute(IClasspathAttribute.IGNORE_OPTIONAL_PROBLEMS, "true");
private static final IClasspathAttribute ATTR_IGNORE_OPTIONAL_PROBLEMS_FALSE = JavaCore.newClasspathAttribute(IClasspathAttribute.IGNORE_OPTIONAL_PROBLEMS, "false");
- public class TestContainer implements IClasspathContainer {
+ public static class TestContainer implements IClasspathContainer {
IPath path;
IClasspathEntry[] entries;
TestContainer(IPath path, IClasspathEntry[] entries){
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CodeCorrectionTestsRequestor.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CodeCorrectionTestsRequestor.java
index a6ebba28a..91ddc4538 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CodeCorrectionTestsRequestor.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CodeCorrectionTestsRequestor.java
@@ -19,7 +19,7 @@ import org.eclipse.jdt.core.ICorrectionRequestor;
@SuppressWarnings({"rawtypes", "unchecked"})
public class CodeCorrectionTestsRequestor implements ICorrectionRequestor {
- private class Suggestion {
+ private static class Suggestion {
public String text;
public int start;
public int end;
@@ -30,7 +30,7 @@ public class CodeCorrectionTestsRequestor implements ICorrectionRequestor {
}
}
- class SuggestionComparator implements Comparator {
+ static class SuggestionComparator implements Comparator {
@Override
public int compare(Object o1,Object o2) {
Suggestion s1 = (Suggestion)o1;
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionContextTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionContextTests.java
index 835ccef90..68bb60c8e 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionContextTests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionContextTests.java
@@ -5223,9 +5223,9 @@ public void test0172() throws JavaModelException {
"completion range=["+(tokenStart)+", "+(tokenEnd)+"]\n" +
"completion token=\"format\"\n" +
"completion token kind=TOKEN_KIND_NAME\n" +
- "expectedTypesSignatures=null\n" +
- "expectedTypesKeys=null\n" +
- "completion token location={STATEMENT_START}\n" +
+ "expectedTypesSignatures={Ljava.lang.String;}\n" +
+ "expectedTypesKeys={Ljava/lang/String;}\n" +
+ "completion token location=UNKNOWN\n" +
"enclosingElement=foo() {key=Ltest/X;.foo()V} [in X [in [Working copy] X.java [in test [in src3 [in Completion]]]]]\n" +
"visibleElements={\n" +
" fooBar [in foo() [in X [in [Working copy] X.java [in test [in src3 [in Completion]]]]]],\n" +
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionTests.java
index 48fade71b..d2167f2ba 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionTests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionTests.java
@@ -23678,6 +23678,99 @@ public void testBug346454i() throws JavaModelException {
COMPLETION_PROJECT.setOptions(options);
}
}
+//https://bugs.eclipse.org/bugs/show_bug.cgi?id=346454
+//Qualified allocation case. Corrected case (need explicit type arg of outer instance).
+public void testBug346454j() throws JavaModelException {
+ Map<String, String> options = COMPLETION_PROJECT.getOptions(true);
+ String savedOptionCompliance = options.get(CompilerOptions.OPTION_Compliance);
+ String savedOptionSource = options.get(CompilerOptions.OPTION_Source);
+ try {
+ options.put(CompilerOptions.OPTION_Compliance, CompilerOptions.VERSION_1_7);
+ options.put(CompilerOptions.OPTION_Source, CompilerOptions.VERSION_1_7);
+ COMPLETION_PROJECT.setOptions(options);
+ this.workingCopies = new ICompilationUnit[2];
+ this.workingCopies[0] = getWorkingCopy(
+ "/Completion/src/test/Test.java",
+ "package test;" +
+ "import pack.Test;\n"+
+ "public class X {\n" +
+ " public void foo(String str) {\n" +
+ " Test<String>.T2<String> t = new Test<String>().new T2<>()\n" +
+ " }" +
+ "}\n");
+
+ this.workingCopies[1] = getWorkingCopy(
+ "/Completion/src/pack/Test.java",
+ "package pack;"+
+ "public class Test<T> {\n" +
+ " public class T2<Z> {\n" +
+ " public T2(Z z){}\n" +
+ " }" +
+ "}\n");
+
+ CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true);
+ String str = this.workingCopies[0].getSource();
+ String completeBehind = ".new T2<>(";
+ int cursorLocation = str.lastIndexOf(completeBehind) + completeBehind.length();
+ this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
+ assertResults(
+ "T2[METHOD_REF<CONSTRUCTOR>]{, Lpack.Test<Ljava.lang.String;>.T2<>;, (TZ;)V, T2, (z), 39}\n" +
+ "Test<java.lang.String>.T2<>[ANONYMOUS_CLASS_DECLARATION]{, Lpack.Test<Ljava.lang.String;>.T2<>;, (TZ;)V, null, (z), 39}",
+ requestor.getResults());
+ } finally {
+ // Restore compliance settings.
+ options.put(CompilerOptions.OPTION_Compliance, savedOptionCompliance);
+ options.put(CompilerOptions.OPTION_Source, savedOptionSource);
+ COMPLETION_PROJECT.setOptions(options);
+ }
+}
+//https://bugs.eclipse.org/bugs/show_bug.cgi?id=346454
+//Qualified allocation case. Corrected case (using ctor-arg for inference).
+public void testBug346454k() throws JavaModelException {
+ Map<String, String> options = COMPLETION_PROJECT.getOptions(true);
+ String savedOptionCompliance = options.get(CompilerOptions.OPTION_Compliance);
+ String savedOptionSource = options.get(CompilerOptions.OPTION_Source);
+ try {
+ options.put(CompilerOptions.OPTION_Compliance, CompilerOptions.VERSION_1_7);
+ options.put(CompilerOptions.OPTION_Source, CompilerOptions.VERSION_1_7);
+ COMPLETION_PROJECT.setOptions(options);
+ this.workingCopies = new ICompilationUnit[2];
+ this.workingCopies[0] = getWorkingCopy(
+ "/Completion/src/test/Test.java",
+ "package test;" +
+ "import pack.Test;\n"+
+ "public class X {\n" +
+ " public void foo(String str) {\n" +
+ " Test<String>.T2<String> t = new Test<>(\"\").new T2<>()\n" +
+ " }" +
+ "}\n");
+
+ this.workingCopies[1] = getWorkingCopy(
+ "/Completion/src/pack/Test.java",
+ "package pack;"+
+ "public class Test<T> {\n" +
+ " public Test(T t) {}\n" +
+ " public class T2<Z> {\n" +
+ " public T2(Z z){}\n" +
+ " }" +
+ "}\n");
+
+ CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true);
+ String str = this.workingCopies[0].getSource();
+ String completeBehind = ".new T2<>(";
+ int cursorLocation = str.lastIndexOf(completeBehind) + completeBehind.length();
+ this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
+ assertResults(
+ "T2[METHOD_REF<CONSTRUCTOR>]{, Lpack.Test<Ljava.lang.String;>.T2<>;, (TZ;)V, T2, (z), 39}\n" +
+ "Test<java.lang.String>.T2<>[ANONYMOUS_CLASS_DECLARATION]{, Lpack.Test<Ljava.lang.String;>.T2<>;, (TZ;)V, null, (z), 39}",
+ requestor.getResults());
+ } finally {
+ // Restore compliance settings.
+ options.put(CompilerOptions.OPTION_Compliance, savedOptionCompliance);
+ options.put(CompilerOptions.OPTION_Source, savedOptionSource);
+ COMPLETION_PROJECT.setOptions(options);
+ }
+}
// https://bugs.eclipse.org/bugs/show_bug.cgi?id=346415
// To make sure we get proposals after the second catch block.
public void testBug346415() throws JavaModelException {
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionTests18.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionTests18.java
index 7af2c332a..b866ff151 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionTests18.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionTests18.java
@@ -28,7 +28,6 @@ import org.eclipse.jdt.core.JavaModelException;
import org.eclipse.jdt.core.eval.IEvaluationContext;
import org.eclipse.jdt.internal.codeassist.RelevanceConstants;
-//@SuppressWarnings({"rawtypes", "unchecked"})
public class CompletionTests18 extends AbstractJavaModelCompletionTests {
static {
@@ -70,7 +69,7 @@ public void test001() throws JavaModelException {
int cursorLocation = str.lastIndexOf(completeBehind) + completeBehind.length();
this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
assertResults(
- "first[LOCAL_VARIABLE_REF]{first, null, I, first, null, " + (R_DEFAULT + 22) + "}",
+ "first[LOCAL_VARIABLE_REF]{first, null, I, first, null, " + (R_DEFAULT + R_EXACT_EXPECTED_TYPE + 22) + "}",
requestor.getResults());
}
public void test002() throws JavaModelException {
@@ -93,7 +92,7 @@ public void test002() throws JavaModelException {
int cursorLocation = str.lastIndexOf(completeBehind) + completeBehind.length();
this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
assertResults(
- "first[LOCAL_VARIABLE_REF]{first, null, I, first, null, " + (R_DEFAULT + 22) + "}",
+ "first[LOCAL_VARIABLE_REF]{first, null, I, first, null, " + (R_DEFAULT + R_EXACT_EXPECTED_TYPE + 22) + "}",
requestor.getResults());
}
public void test003() throws JavaModelException {
@@ -128,19 +127,19 @@ public void test003() throws JavaModelException {
"CASE_INSENSITIVE_ORDER[FIELD_REF]{CASE_INSENSITIVE_ORDER, Ljava.lang.String;, Ljava.util.Comparator<Ljava.lang.String;>;, CASE_INSENSITIVE_ORDER, null, " + (R_DEFAULT + 9) + "}\n" +
"copyValueOf[METHOD_REF]{copyValueOf(), Ljava.lang.String;, ([C)Ljava.lang.String;, copyValueOf, (arg0), " + (R_DEFAULT + 19) + "}\n" +
"copyValueOf[METHOD_REF]{copyValueOf(), Ljava.lang.String;, ([CII)Ljava.lang.String;, copyValueOf, (arg0, arg1, arg2), " + (R_DEFAULT + 19) + "}\n" +
- "charAt[METHOD_REF]{charAt(), Ljava.lang.String;, (I)C, charAt, (arg0), " + (R_DEFAULT + 30) + "}\n" +
"chars[METHOD_REF]{chars(), Ljava.lang.CharSequence;, ()Ljava.util.stream.IntStream;, chars, null, " + (R_DEFAULT + 30) + "}\n" +
"clone[METHOD_REF]{clone(), Ljava.lang.Object;, ()Ljava.lang.Object;, clone, null, " + (R_DEFAULT + 30) + "}\n" +
- "codePointAt[METHOD_REF]{codePointAt(), Ljava.lang.String;, (I)I, codePointAt, (arg0), " + (R_DEFAULT + 30) + "}\n" +
- "codePointBefore[METHOD_REF]{codePointBefore(), Ljava.lang.String;, (I)I, codePointBefore, (arg0), " + (R_DEFAULT + 30) + "}\n" +
- "codePointCount[METHOD_REF]{codePointCount(), Ljava.lang.String;, (II)I, codePointCount, (arg0, arg1), " + (R_DEFAULT + 30) + "}\n" +
"codePoints[METHOD_REF]{codePoints(), Ljava.lang.CharSequence;, ()Ljava.util.stream.IntStream;, codePoints, null, " + (R_DEFAULT + 30) + "}\n" +
- "compareTo[METHOD_REF]{compareTo(), Ljava.lang.String;, (Ljava.lang.String;)I, compareTo, (arg0), " + (R_DEFAULT + 30) + "}\n" +
- "compareToIgnoreCase[METHOD_REF]{compareToIgnoreCase(), Ljava.lang.String;, (Ljava.lang.String;)I, compareToIgnoreCase, (arg0), " + (R_DEFAULT + 30) + "}\n" +
"concat[METHOD_REF]{concat(), Ljava.lang.String;, (Ljava.lang.String;)Ljava.lang.String;, concat, (arg0), " + (R_DEFAULT + 30) + "}\n" +
"contains[METHOD_REF]{contains(), Ljava.lang.String;, (Ljava.lang.CharSequence;)Z, contains, (arg0), " + (R_DEFAULT + 30) + "}\n" +
"contentEquals[METHOD_REF]{contentEquals(), Ljava.lang.String;, (Ljava.lang.CharSequence;)Z, contentEquals, (arg0), " + (R_DEFAULT + 30) + "}\n" +
- "contentEquals[METHOD_REF]{contentEquals(), Ljava.lang.String;, (Ljava.lang.StringBuffer;)Z, contentEquals, (arg0), " + (R_DEFAULT + 30) + "}",
+ "contentEquals[METHOD_REF]{contentEquals(), Ljava.lang.String;, (Ljava.lang.StringBuffer;)Z, contentEquals, (arg0), " + (R_DEFAULT + 30) + "}\n" +
+ "charAt[METHOD_REF]{charAt(), Ljava.lang.String;, (I)C, charAt, (arg0), " + (R_DEFAULT + R_EXPECTED_TYPE + 30) + "}\n" +
+ "codePointAt[METHOD_REF]{codePointAt(), Ljava.lang.String;, (I)I, codePointAt, (arg0), " + (R_DEFAULT + R_EXACT_EXPECTED_TYPE + 30) + "}\n" +
+ "codePointBefore[METHOD_REF]{codePointBefore(), Ljava.lang.String;, (I)I, codePointBefore, (arg0), " + (R_DEFAULT + R_EXACT_EXPECTED_TYPE + 30) + "}\n" +
+ "codePointCount[METHOD_REF]{codePointCount(), Ljava.lang.String;, (II)I, codePointCount, (arg0, arg1), " + (R_DEFAULT + R_EXACT_EXPECTED_TYPE + 30) + "}\n" +
+ "compareTo[METHOD_REF]{compareTo(), Ljava.lang.String;, (Ljava.lang.String;)I, compareTo, (arg0), " + (R_DEFAULT + R_EXACT_EXPECTED_TYPE + 30) + "}\n" +
+ "compareToIgnoreCase[METHOD_REF]{compareToIgnoreCase(), Ljava.lang.String;, (Ljava.lang.String;)I, compareToIgnoreCase, (arg0), " + (R_DEFAULT + R_EXACT_EXPECTED_TYPE + 30) + "}",
requestor.getResults());
}
public void test004() throws JavaModelException {
@@ -189,8 +188,9 @@ public void test005() throws JavaModelException {
String completeBehind = "arg";
int cursorLocation = str.lastIndexOf(completeBehind) + completeBehind.length();
this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
+ int relevance = R_DEFAULT + R_RESOLVED + R_INTERESTING + R_CASE + R_EXACT_EXPECTED_TYPE + R_NON_RESTRICTED + R_UNQUALIFIED;
assertResults(
- "argument[LOCAL_VARIABLE_REF]{argument, null, I, argument, null, " + (R_DEFAULT + 52) + "}",
+ "argument[LOCAL_VARIABLE_REF]{argument, null, I, argument, null, " + relevance + "}",
requestor.getResults());
}
public void test006() throws JavaModelException {
@@ -541,8 +541,9 @@ public void test014() throws JavaModelException { // ensure higher relevance for
String completeBehind = "arrayO";
int cursorLocation = str.lastIndexOf(completeBehind) + completeBehind.length();
this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
+ int relevance = R_DEFAULT + R_RESOLVED + R_INTERESTING + R_CASE + R_NON_RESTRICTED + R_EXACT_EXPECTED_TYPE + R_UNQUALIFIED;
assertResults("arrayOfStrings[LOCAL_VARIABLE_REF]{arrayOfStrings, null, [Ljava.lang.String;, null, null, arrayOfStrings, null, [168, 174], " + (R_DEFAULT + 22) + "}\n" +
- "arrayOfInts[LOCAL_VARIABLE_REF]{arrayOfInts, null, [I, null, null, arrayOfInts, null, [168, 174], " + (R_DEFAULT + 52) + "}", requestor.getResults());
+ "arrayOfInts[LOCAL_VARIABLE_REF]{arrayOfInts, null, [I, null, null, arrayOfInts, null, [168, 174], " + relevance + "}", requestor.getResults());
}
// https://bugs.eclipse.org/bugs/show_bug.cgi?id=422901, [1.8][code assist] Code assistant sensitive to scope.referenceContext type identity.
public void test015() throws JavaModelException { // ensure higher relevance for matching return type.
@@ -676,8 +677,8 @@ public void test018() throws JavaModelException { // computing visible elements
"completion range=[233, 232]\n" +
"completion token=\"\"\n" +
"completion token kind=TOKEN_KIND_NAME\n" +
- "expectedTypesSignatures=null\n" +
- "expectedTypesKeys=null\n" +
+ "expectedTypesSignatures={Z,C,I,J,F,D,[C,Ljava.lang.String;,Ljava.lang.Object;}\n" +
+ "expectedTypesKeys={Z,C,I,J,F,D,[C,Ljava/lang/String;,Ljava/lang/Object;}\n" +
"completion token location=UNKNOWN\n" +
"visibleElements={\n" +
" xField {key=LX;.xField)LX;} [in X [in [Working copy] X.java [in <default> [in src [in Completion]]]]],\n" +
@@ -909,7 +910,7 @@ public void testBug405125a() throws JavaModelException {
this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
assertResults(
- "bars[METHOD_REF]{bars(), LB;, ()I, bars, null, " + (R_DEFAULT + 22) + "}",
+ "bars[METHOD_REF]{bars(), LB;, ()I, bars, null, " + (R_DEFAULT + R_EXACT_EXPECTED_TYPE + 22) + "}",
requestor.getResults());
}
public void testBug405125b() throws JavaModelException {
@@ -937,7 +938,7 @@ public void testBug405125b() throws JavaModelException {
this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
assertResults(
- "another[FIELD_REF]{another, LB;, I, another, null, " + (R_DEFAULT + 22) + "}",
+ "another[FIELD_REF]{another, LB;, I, another, null, " + (R_DEFAULT + R_EXACT_EXPECTED_TYPE + 22) + "}",
requestor.getResults());
}
// https://bugs.eclipse.org/bugs/show_bug.cgi?id=425084, [1.8][completion] Eclipse freeze while autocompleting try block in lambda.
@@ -1191,8 +1192,8 @@ public void test428735() throws JavaModelException {
String completeBehind = "p.get";
int cursorLocation = str.lastIndexOf(completeBehind) + completeBehind.length();
this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
- assertResults("getClass[METHOD_REF]{getClass(), Ljava.lang.Object;, ()Ljava.lang.Class<*>;, null, null, getClass, null, [186, 189], " + (R_DEFAULT + 30) + "}\n" +
- "getLastName[METHOD_REF]{getLastName(), LPerson;, ()Ljava.lang.String;, null, null, getLastName, null, [186, 189], " + (R_DEFAULT + 30) + "}", requestor.getResults());
+ assertResults("getClass[METHOD_REF]{getClass(), Ljava.lang.Object;, ()Ljava.lang.Class<*>;, null, null, getClass, null, [186, 189], " + (R_DEFAULT + R_EXPECTED_TYPE + 30) + "}\n" +
+ "getLastName[METHOD_REF]{getLastName(), LPerson;, ()Ljava.lang.String;, null, null, getLastName, null, [186, 189], " + (R_DEFAULT + R_EXACT_EXPECTED_TYPE + 30) + "}", requestor.getResults());
}
// https://bugs.eclipse.org/bugs/show_bug.cgi?id=428735, [1.8][assist] Missing completion proposals inside lambda body expression - other than first token
public void test428735a() throws JavaModelException {
@@ -1246,7 +1247,7 @@ public void test428735b() throws JavaModelException {
int cursorLocation = str.lastIndexOf(completeBehind) + completeBehind.length();
this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
assertResults("getClass[METHOD_REF]{getClass(), Ljava.lang.Object;, ()Ljava.lang.Class<*>;, null, null, getClass, null, [293, 296], " + (R_DEFAULT + 30) + "}\n" +
- "getLastName[METHOD_REF]{getLastName(), LPerson;, ()Ljava.lang.String;, null, null, getLastName, null, [293, 296], " + (R_DEFAULT + 30) + "}", requestor.getResults());
+ "getLastName[METHOD_REF]{getLastName(), LPerson;, ()Ljava.lang.String;, null, null, getLastName, null, [293, 296], " + (R_DEFAULT + R_EXACT_EXPECTED_TYPE + 30) + "}", requestor.getResults());
}
// https://bugs.eclipse.org/bugs/show_bug.cgi?id=428735, [1.8][assist] Missing completion proposals inside lambda body expression - other than first token
public void test428735c() throws JavaModelException {
@@ -1872,7 +1873,7 @@ public void test435219e() throws JavaModelException {
this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
assertResults("doubleToLongBits[METHOD_REF]{doubleToLongBits(), Ljava.lang.Double;, (D)J, null, null, doubleToLongBits, (arg0), [355, 358], " + (R_DEFAULT + 19) + "}\n" +
"doubleToRawLongBits[METHOD_REF]{doubleToRawLongBits(), Ljava.lang.Double;, (D)J, null, null, doubleToRawLongBits, (arg0), [355, 358], " + (R_DEFAULT + 19) + "}\n" +
- "doubleValue[METHOD_REF]{doubleValue(), Ljava.lang.Double;, ()D, null, null, doubleValue, null, [355, 358], " + (R_DEFAULT + 30) + "}", requestor.getResults());
+ "doubleValue[METHOD_REF]{doubleValue(), Ljava.lang.Double;, ()D, null, null, doubleValue, null, [355, 358], " + (R_DEFAULT + R_EXPECTED_TYPE + 30) + "}", requestor.getResults());
}
// https://bugs.eclipse.org/bugs/show_bug.cgi?id=435219, [1.8][content assist] No proposals for some closure cases
public void test435219f() throws JavaModelException {
@@ -1945,7 +1946,7 @@ public void test435682() throws JavaModelException {
String completeBehind = "so.tr";
int cursorLocation = str.lastIndexOf(completeBehind) + completeBehind.length();
this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
- assertResults("trim[METHOD_REF]{trim(), Ljava.lang.String;, ()Ljava.lang.String;, null, null, trim, null, [237, 239], " + (R_DEFAULT + 30) + "}", requestor.getResults());
+ assertResults("trim[METHOD_REF]{trim(), Ljava.lang.String;, ()Ljava.lang.String;, null, null, trim, null, [237, 239], " + (R_DEFAULT + R_EXPECTED_TYPE + 30) + "}", requestor.getResults());
}
// https://bugs.eclipse.org/bugs/show_bug.cgi?id=435682, [1.8] content assist not working inside lambda expression
public void test435682a() throws JavaModelException {
@@ -1967,7 +1968,7 @@ public void test435682a() throws JavaModelException {
String completeBehind = "so.tr";
int cursorLocation = str.lastIndexOf(completeBehind) + completeBehind.length();
this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
- assertResults("trim[METHOD_REF]{trim(), Ljava.lang.String;, ()Ljava.lang.String;, null, null, trim, null, [246, 248], " + (R_DEFAULT + 30) + "}", requestor.getResults());
+ assertResults("trim[METHOD_REF]{trim(), Ljava.lang.String;, ()Ljava.lang.String;, null, null, trim, null, [246, 248], " + (R_DEFAULT + R_EXPECTED_TYPE + 30) + "}", requestor.getResults());
}
// https://bugs.eclipse.org/bugs/show_bug.cgi?id=430667, [1.8][content assist] no proposals around lambda as a field
public void test430667() throws JavaModelException {
@@ -2098,8 +2099,8 @@ public void test444300() throws JavaModelException {
String completeBehind = "so.ch";
int cursorLocation = str.lastIndexOf(completeBehind) + completeBehind.length();
this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
- assertResults("charAt[METHOD_REF]{charAt(), Ljava.lang.String;, (I)C, null, null, charAt, (arg0), [232, 234], " + (R_DEFAULT + 30) + "}\n" +
- "chars[METHOD_REF]{chars(), Ljava.lang.CharSequence;, ()Ljava.util.stream.IntStream;, null, null, chars, null, [232, 234], " + (R_DEFAULT + 30) + "}", requestor.getResults());
+ assertResults("charAt[METHOD_REF]{charAt(), Ljava.lang.String;, (I)C, null, null, charAt, (arg0), [232, 234], " + (R_DEFAULT + R_EXPECTED_TYPE + 30) + "}\n" +
+ "chars[METHOD_REF]{chars(), Ljava.lang.CharSequence;, ()Ljava.util.stream.IntStream;, null, null, chars, null, [232, 234], " + (R_DEFAULT + R_EXPECTED_TYPE + 30) + "}", requestor.getResults());
}
// https://bugs.eclipse.org/bugs/show_bug.cgi?id=435219, [1.8][content assist] No proposals for some closure cases
// https://bugs.eclipse.org/bugs/show_bug.cgi?id=444300, [1.8] content assist not working inside lambda expression in case of fields
@@ -2187,7 +2188,7 @@ public void test435219j() throws JavaModelException {
this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
assertResults("doubleToLongBits[METHOD_REF]{doubleToLongBits(), Ljava.lang.Double;, (D)J, null, null, doubleToLongBits, (arg0), [235, 238], " + (R_DEFAULT + 19) + "}\n" +
"doubleToRawLongBits[METHOD_REF]{doubleToRawLongBits(), Ljava.lang.Double;, (D)J, null, null, doubleToRawLongBits, (arg0), [235, 238], " + (R_DEFAULT + 19) + "}\n" +
- "doubleValue[METHOD_REF]{doubleValue(), Ljava.lang.Double;, ()D, null, null, doubleValue, null, [235, 238], " + (R_DEFAULT + 30) + "}", requestor.getResults());
+ "doubleValue[METHOD_REF]{doubleValue(), Ljava.lang.Double;, ()D, null, null, doubleValue, null, [235, 238], " + (R_DEFAULT + R_EXPECTED_TYPE + 30) + "}", requestor.getResults());
}
// https://bugs.eclipse.org/bugs/show_bug.cgi?id=435219, [1.8][content assist] No proposals for some closure cases
// https://bugs.eclipse.org/bugs/show_bug.cgi?id=444300, [1.8] content assist not working inside lambda expression in case of fields
@@ -2633,7 +2634,7 @@ public void testBug481215a() throws JavaModelException {
"ResponseCache[TYPE_REF]{java.net.ResponseCache, java.net, Ljava.net.ResponseCache;, null, null, " + (R_DEFAULT + 9) + "}\n" +
"ResultSet[TYPE_REF]{java.sql.ResultSet, java.sql, Ljava.sql.ResultSet;, null, null, " + (R_DEFAULT + 9) + "}\n" +
"ResultSetMetaData[TYPE_REF]{java.sql.ResultSetMetaData, java.sql, Ljava.sql.ResultSetMetaData;, null, null, " + (R_DEFAULT + 9) + "}\n" +
- "result[LOCAL_VARIABLE_REF]{result, null, Ljava.lang.String;, result, null, " + (R_DEFAULT + 22) + "}", requestor.getResults());
+ "result[LOCAL_VARIABLE_REF]{result, null, Ljava.lang.String;, result, null, " + (R_DEFAULT + R_EXACT_EXPECTED_TYPE + 22) + "}", requestor.getResults());
}
public void testBug481215b() throws JavaModelException {
this.workingCopies = new ICompilationUnit[1];
@@ -2665,7 +2666,7 @@ public void testBug481215b() throws JavaModelException {
"ResponseCache[TYPE_REF]{java.net.ResponseCache, java.net, Ljava.net.ResponseCache;, null, null, " + (R_DEFAULT + 9) + "}\n" +
"ResultSet[TYPE_REF]{java.sql.ResultSet, java.sql, Ljava.sql.ResultSet;, null, null, " + (R_DEFAULT + 9) + "}\n" +
"ResultSetMetaData[TYPE_REF]{java.sql.ResultSetMetaData, java.sql, Ljava.sql.ResultSetMetaData;, null, null, " + (R_DEFAULT + 9) + "}\n" +
- "result[LOCAL_VARIABLE_REF]{result, null, Ljava.lang.String;, result, null, " + (R_DEFAULT + 22) + "}", requestor.getResults());
+ "result[LOCAL_VARIABLE_REF]{result, null, Ljava.lang.String;, result, null, " + (R_DEFAULT + R_EXACT_EXPECTED_TYPE + 22) + "}", requestor.getResults());
}
public void testBug481215c() throws JavaModelException {
this.workingCopies = new ICompilationUnit[1];
@@ -2697,7 +2698,7 @@ public void testBug481215c() throws JavaModelException {
"ResponseCache[TYPE_REF]{java.net.ResponseCache, java.net, Ljava.net.ResponseCache;, null, null, " + (R_DEFAULT + 9) + "}\n" +
"ResultSet[TYPE_REF]{java.sql.ResultSet, java.sql, Ljava.sql.ResultSet;, null, null, " + (R_DEFAULT + 9) + "}\n" +
"ResultSetMetaData[TYPE_REF]{java.sql.ResultSetMetaData, java.sql, Ljava.sql.ResultSetMetaData;, null, null, " + (R_DEFAULT + 9) + "}\n" +
- "result[LOCAL_VARIABLE_REF]{result, null, Ljava.lang.String;, result, null, " + (R_DEFAULT + 22) + "}", requestor.getResults());
+ "result[LOCAL_VARIABLE_REF]{result, null, Ljava.lang.String;, result, null, " + (R_DEFAULT + R_EXACT_EXPECTED_TYPE + 22) + "}", requestor.getResults());
}
public void testBug481215d() throws JavaModelException {
this.workingCopies = new ICompilationUnit[1];
@@ -2737,8 +2738,8 @@ public void testBug481215d() throws JavaModelException {
"ResponseCache[TYPE_REF]{java.net.ResponseCache, java.net, Ljava.net.ResponseCache;, null, null, " + (R_DEFAULT + 9) + "}\n" +
"ResultSet[TYPE_REF]{java.sql.ResultSet, java.sql, Ljava.sql.ResultSet;, null, null, " + (R_DEFAULT + 9) + "}\n" +
"ResultSetMetaData[TYPE_REF]{java.sql.ResultSetMetaData, java.sql, Ljava.sql.ResultSetMetaData;, null, null, " + (R_DEFAULT + 9) + "}\n" +
- "result[LOCAL_VARIABLE_REF]{result, null, Ljava.lang.String;, result, null, " + (R_DEFAULT + 22) + "}\n" +
- "result2[LOCAL_VARIABLE_REF]{result2, null, Ljava.lang.String;, result2, null, " + (R_DEFAULT + 22) + "}", requestor.getResults());
+ "result[LOCAL_VARIABLE_REF]{result, null, Ljava.lang.String;, result, null, " + (R_DEFAULT + R_EXACT_EXPECTED_TYPE + 22) + "}\n" +
+ "result2[LOCAL_VARIABLE_REF]{result2, null, Ljava.lang.String;, result2, null, " + (R_DEFAULT + R_EXACT_EXPECTED_TYPE + 22) + "}", requestor.getResults());
}
//https://bugs.eclipse.org/bugs/show_bug.cgi?id=484479
public void test484479() throws JavaModelException {
@@ -3035,25 +3036,26 @@ public void testBug493705() throws JavaModelException {
int cursorLocation = str.indexOf(completeBehind) + completeBehind.length();
this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
// TODO: compute relevances
- int relevance1 = R_DEFAULT + R_RESOLVED + R_INTERESTING + R_CASE + R_NON_RESTRICTED;
- int relevance2 = R_DEFAULT + R_RESOLVED + R_INTERESTING + R_CASE + R_NON_RESTRICTED + R_NON_STATIC;
+ int relevance1 = R_DEFAULT + R_RESOLVED + R_INTERESTING + R_CASE + R_NON_RESTRICTED;
+ int relevance2a = R_DEFAULT + R_RESOLVED + R_INTERESTING + R_CASE + R_NON_RESTRICTED + R_NON_STATIC + R_VOID;
+ int relevance2 = R_DEFAULT + R_RESOLVED + R_INTERESTING + R_CASE + R_NON_RESTRICTED + R_NON_STATIC;
assertResults(
"create[METHOD_REF]{create(), LSwtUI<LLabel;>;, <T:LControl;>(Ljava.util.function.BiFunction<LComposite;Ljava.lang.Integer;TT;>;)LSwtUI<TT;>;, null, null, create, (ctor), [853, 853], "+relevance1+"}\n" +
"new[KEYWORD]{new, null, null, null, null, new, null, [853, 853], "+relevance1+"}\n" +
+ "finalize[METHOD_REF]{finalize(), Ljava.lang.Object;, ()V, null, null, finalize, null, [853, 853], "+relevance2a+"}\n" +
+ "notify[METHOD_REF]{notify(), Ljava.lang.Object;, ()V, null, null, notify, null, [853, 853], "+relevance2a+"}\n" +
+ "notifyAll[METHOD_REF]{notifyAll(), Ljava.lang.Object;, ()V, null, null, notifyAll, null, [853, 853], "+relevance2a+"}\n" +
+ "wait[METHOD_REF]{wait(), Ljava.lang.Object;, ()V, null, null, wait, null, [853, 853], "+relevance2a+"}\n" +
+ "wait[METHOD_REF]{wait(), Ljava.lang.Object;, (J)V, null, null, wait, (millis), [853, 853], "+relevance2a+"}\n" +
+ "wait[METHOD_REF]{wait(), Ljava.lang.Object;, (JI)V, null, null, wait, (millis, nanos), [853, 853], "+relevance2a+"}\n" +
"child[METHOD_REF]{child(), LSwtUI<LLabel;>;, (LControlSupplier;)LSwtUI<LLabel;>;, null, null, child, (supplier), [853, 853], "+relevance2+"}\n" +
"child[METHOD_REF]{child(), LSwtUI<LLabel;>;, (LViewerSupplier;)LSwtUI<LLabel;>;, null, null, child, (supplier), [853, 853], "+relevance2+"}\n" +
"clone[METHOD_REF]{clone(), Ljava.lang.Object;, ()Ljava.lang.Object;, null, null, clone, null, [853, 853], "+relevance2+"}\n" +
"equals[METHOD_REF]{equals(), Ljava.lang.Object;, (Ljava.lang.Object;)Z, null, null, equals, (obj), [853, 853], "+relevance2+"}\n" +
- "finalize[METHOD_REF]{finalize(), Ljava.lang.Object;, ()V, null, null, finalize, null, [853, 853], "+relevance2+"}\n" +
"getClass[METHOD_REF]{getClass(), Ljava.lang.Object;, ()Ljava.lang.Class<*>;, null, null, getClass, null, [853, 853], "+relevance2+"}\n" +
"hashCode[METHOD_REF]{hashCode(), Ljava.lang.Object;, ()I, null, null, hashCode, null, [853, 853], "+relevance2+"}\n" +
- "notify[METHOD_REF]{notify(), Ljava.lang.Object;, ()V, null, null, notify, null, [853, 853], "+relevance2+"}\n" +
- "notifyAll[METHOD_REF]{notifyAll(), Ljava.lang.Object;, ()V, null, null, notifyAll, null, [853, 853], "+relevance2+"}\n" +
"text[METHOD_REF]{text(), LSwtUI<LLabel;>;, (Ljava.lang.String;)LSwtUI<LLabel;>;, null, null, text, (text), [853, 853], "+relevance2+"}\n" +
- "toString[METHOD_REF]{toString(), Ljava.lang.Object;, ()Ljava.lang.String;, null, null, toString, null, [853, 853], "+relevance2+"}\n" +
- "wait[METHOD_REF]{wait(), Ljava.lang.Object;, ()V, null, null, wait, null, [853, 853], "+relevance2+"}\n" +
- "wait[METHOD_REF]{wait(), Ljava.lang.Object;, (J)V, null, null, wait, (millis), [853, 853], "+relevance2+"}\n" +
- "wait[METHOD_REF]{wait(), Ljava.lang.Object;, (JI)V, null, null, wait, (millis, nanos), [853, 853], "+relevance2+"}"
+ "toString[METHOD_REF]{toString(), Ljava.lang.Object;, ()Ljava.lang.String;, null, null, toString, null, [853, 853], "+relevance2+"}"
, requestor.getResults());
}
// https://bugs.eclipse.org/515809 - Syso shortcut lambda expression
@@ -3124,8 +3126,9 @@ public void test485492b() throws JavaModelException {
String completeBehind = "return zil";
int cursorLocation = str.lastIndexOf(completeBehind) + completeBehind.length();
this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
+ int relevance = R_DEFAULT + R_RESOLVED + R_INTERESTING + R_CASE + R_EXACT_EXPECTED_TYPE + R_UNQUALIFIED + R_NON_RESTRICTED;
assertResults(
- "zilch[LOCAL_VARIABLE_REF]{zilch, null, Ljava.lang.String;, null, null, zilch, null, [81, 84], 52}",
+ "zilch[LOCAL_VARIABLE_REF]{zilch, null, Ljava.lang.String;, null, null, zilch, null, [81, 84], " + relevance + "}",
requestor.getResults());
}
public void test485492c() throws JavaModelException {
@@ -4069,4 +4072,938 @@ public void testBug570593_MultiTypeParam_NestedMultiParam_OnSecond() throws Java
requestor.getResults());
}
+public void testBug572315_OnFieldAboveAnnotatedMember_VariableNameSuggestion() throws JavaModelException {
+ this.workingCopies = new ICompilationUnit[2];
+ this.workingCopies[0] = getWorkingCopy(
+ "/Completion/src/Bug570593.java",
+ "import java.util.List;\n" +
+ "\n" +
+ "public class Bug572315 {\n" +
+ " private List<String> \n" +
+ " @Deprecated \n" +
+ " private void test(){ \n" +
+ " } \n" +
+ "}");
+
+ CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true);
+ requestor.allowAllRequiredProposals();
+
+ String str = this.workingCopies[0].getSource();
+ String completeBehind = "List<String> ";
+ int cursorLocation = str.lastIndexOf(completeBehind) + completeBehind.length();
+ this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner, new NullProgressMonitor());
+
+ assertResults(
+ "list[VARIABLE_DECLARATION]{list, null, Ljava.util.List<Ljava.lang.String;>;, list, null, 48}\n"
+ + "strings[VARIABLE_DECLARATION]{strings, null, Ljava.util.List<Ljava.lang.String;>;, strings, null, 48}",
+ requestor.getResults());
+}
+
+public void testBug572315_OnFieldAboveParameterizedAnnotatedMember_VariableNameSuggestion() throws JavaModelException {
+ this.workingCopies = new ICompilationUnit[2];
+ this.workingCopies[0] = getWorkingCopy(
+ "/Completion/src/Bug570593.java",
+ "import java.util.List;\n" +
+ "\n" +
+ "public class Bug572315 {\n" +
+ " private List<String> \n" +
+ " @SuppressWarnings({\"unchecked\"}) \n" +
+ " private void test(){ \n" +
+ " } \n" +
+ "}");
+
+ CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true);
+ requestor.allowAllRequiredProposals();
+
+ String str = this.workingCopies[0].getSource();
+ String completeBehind = "List<String> ";
+ int cursorLocation = str.lastIndexOf(completeBehind) + completeBehind.length();
+ this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner, new NullProgressMonitor());
+
+ assertResults(
+ "list[VARIABLE_DECLARATION]{list, null, Ljava.util.List<Ljava.lang.String;>;, list, null, 48}\n"
+ + "strings[VARIABLE_DECLARATION]{strings, null, Ljava.util.List<Ljava.lang.String;>;, strings, null, 48}",
+ requestor.getResults());
+}
+
+public void testBug572315_OnField_VariableNameSuggestion() throws JavaModelException {
+ this.workingCopies = new ICompilationUnit[2];
+ this.workingCopies[0] = getWorkingCopy(
+ "/Completion/src/Bug570593.java",
+ "import java.util.List;\n" +
+ "\n" +
+ "public class Bug572315 {\n" +
+ " private List<String> \n" +
+ "}");
+
+ CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true);
+ requestor.allowAllRequiredProposals();
+
+ String str = this.workingCopies[0].getSource();
+ String completeBehind = "List<String> ";
+ int cursorLocation = str.lastIndexOf(completeBehind) + completeBehind.length();
+ this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner, new NullProgressMonitor());
+
+ assertResults(
+ "list[VARIABLE_DECLARATION]{list, null, Ljava.util.List<Ljava.lang.String;>;, list, null, 48}\n"
+ + "strings[VARIABLE_DECLARATION]{strings, null, Ljava.util.List<Ljava.lang.String;>;, strings, null, 48}",
+ requestor.getResults());
+}
+
+public void testBug572315_OnFieldAboveMember_VariableNameSuggestion() throws JavaModelException {
+ this.workingCopies = new ICompilationUnit[2];
+ this.workingCopies[0] = getWorkingCopy(
+ "/Completion/src/Bug570593.java",
+ "import java.util.List;\n" +
+ "\n" +
+ "public class Bug572315 {\n" +
+ " private List<String> \n" +
+ " private int count;" +
+ "}");
+
+ CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true);
+ requestor.allowAllRequiredProposals();
+
+ String str = this.workingCopies[0].getSource();
+ String completeBehind = "List<String> ";
+ int cursorLocation = str.lastIndexOf(completeBehind) + completeBehind.length();
+ this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner, new NullProgressMonitor());
+
+ assertResults(
+ "list[VARIABLE_DECLARATION]{list, null, Ljava.util.List<Ljava.lang.String;>;, list, null, 48}\n"
+ + "strings[VARIABLE_DECLARATION]{strings, null, Ljava.util.List<Ljava.lang.String;>;, strings, null, 48}",
+ requestor.getResults());
+}
+
+public void testBug572315_OnFieldAboveAnnotatedField_VariableNameSuggestion() throws JavaModelException {
+ this.workingCopies = new ICompilationUnit[2];
+ this.workingCopies[0] = getWorkingCopy(
+ "/Completion/src/Bug570593.java",
+ "import java.util.List;\n" +
+ "\n" +
+ "public class Bug572315 {\n" +
+ " private List<String> \n" +
+ " @Deprecated \n" +
+ " private int count;" +
+ "}");
+
+ CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true);
+ requestor.allowAllRequiredProposals();
+
+ String str = this.workingCopies[0].getSource();
+ String completeBehind = "List<String> ";
+ int cursorLocation = str.lastIndexOf(completeBehind) + completeBehind.length();
+ this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner, new NullProgressMonitor());
+
+ assertResults(
+ "list[VARIABLE_DECLARATION]{list, null, Ljava.util.List<Ljava.lang.String;>;, list, null, 48}\n"
+ + "strings[VARIABLE_DECLARATION]{strings, null, Ljava.util.List<Ljava.lang.String;>;, strings, null, 48}",
+ requestor.getResults());
+}
+
+public void testBug572315_OnFieldAboveAnnotatedMemberWithSemicolon_VariableNameSuggestion() throws JavaModelException {
+ this.workingCopies = new ICompilationUnit[2];
+ this.workingCopies[0] = getWorkingCopy(
+ "/Completion/src/Bug570593.java",
+ "import java.util.List;\n" +
+ "\n" +
+ "public class Bug572315 {\n" +
+ " private List<String> ;\n" +
+ " @Deprecated \n" +
+ " private int count;" +
+ "}");
+
+ CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true);
+ requestor.allowAllRequiredProposals();
+
+ String str = this.workingCopies[0].getSource();
+ String completeBehind = "List<String> ";
+ int cursorLocation = str.lastIndexOf(completeBehind) + completeBehind.length();
+ this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner, new NullProgressMonitor());
+
+ assertResults(
+ "list[VARIABLE_DECLARATION]{list, null, Ljava.util.List<Ljava.lang.String;>;, list, null, 48}\n"
+ + "strings[VARIABLE_DECLARATION]{strings, null, Ljava.util.List<Ljava.lang.String;>;, strings, null, 48}",
+ requestor.getResults());
+}
+
+public void testBug572315_OnFieldAboveAnnotatedMemberWhichIsAnnotated_VariableNameSuggestion() throws JavaModelException {
+ this.workingCopies = new ICompilationUnit[2];
+ this.workingCopies[0] = getWorkingCopy(
+ "/Completion/src/Bug570593.java",
+ "import java.util.List;\n" +
+ "\n" +
+ "public class Bug572315 {\n" +
+ " @Deprecated \n" +
+ " private List<String> \n" +
+ " @Deprecated \n" +
+ " private int count;" +
+ "}");
+
+ CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true);
+ requestor.allowAllRequiredProposals();
+
+ String str = this.workingCopies[0].getSource();
+ String completeBehind = "List<String> ";
+ int cursorLocation = str.lastIndexOf(completeBehind) + completeBehind.length();
+ this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner, new NullProgressMonitor());
+
+ assertResults(
+ "list[VARIABLE_DECLARATION]{list, null, Ljava.util.List<Ljava.lang.String;>;, list, null, 48}\n"
+ + "strings[VARIABLE_DECLARATION]{strings, null, Ljava.util.List<Ljava.lang.String;>;, strings, null, 48}",
+ requestor.getResults());
+}
+
+public void testBug572315_OnLocalVariableAboveAnnotatedMember_VariableNameSuggestion() throws JavaModelException {
+ this.workingCopies = new ICompilationUnit[2];
+ this.workingCopies[0] = getWorkingCopy(
+ "/Completion/src/Bug570593.java",
+ "import java.util.List;\n" +
+ "\n" +
+ "public class Bug572315 {\n" +
+ " private void foo() {\n" +
+ " List<String> \n" +
+ " @Deprecated()\n" +
+ " Integer age;\n" +
+ " }\n" +
+ "}");
+
+ CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true);
+ requestor.allowAllRequiredProposals();
+
+ String str = this.workingCopies[0].getSource();
+ String completeBehind = "List<String> ";
+ int cursorLocation = str.lastIndexOf(completeBehind) + completeBehind.length();
+ this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner, new NullProgressMonitor());
+
+ assertResults(
+ "list[VARIABLE_DECLARATION]{list, null, Ljava.util.List<Ljava.lang.String;>;, list, null, 48}\n"
+ + "strings[VARIABLE_DECLARATION]{strings, null, Ljava.util.List<Ljava.lang.String;>;, strings, null, 48}",
+ requestor.getResults());
+}
+public void testBug530556() throws JavaModelException {
+ this.workingCopies = new ICompilationUnit[2];
+ this.workingCopies[0] = getWorkingCopy(
+ "Completion/src/Callback.java",
+ "@FunctionalInterface\n" +
+ "public interface Callback<P,R> {\n" +
+ " public R call(P param);\n" +
+ "}\n");
+ this.workingCopies[0] = getWorkingCopy(
+ "Completion/src/EnumLambdaFreeze.java",
+ "public enum EnumLambdaFreeze {\n" +
+ " k1( s_arg -> {\n" +
+ " // freezes as soon as i'm typing a dot after s_arg\n" +
+ " s_arg.\n" +
+ " return( \"\" );\n" +
+ " }, s_arg -> {\n" +
+ " return( \"\" );\n" +
+ " } ),\n" +
+ " k2( s_arg -> s_arg, s_arg -> s_arg );\n" +
+ " \n" +
+ " private EnumLambdaFreeze( Callback<String, String> callback1, \n" +
+ " Callback<String, String> callback2 ){ }\n" +
+ "}\n");
+
+ CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true);
+ requestor.allowAllRequiredProposals();
+
+ String str = this.workingCopies[0].getSource();
+ String completeBehind = "s_arg.";
+ int cursorLocation = str.lastIndexOf(completeBehind) + completeBehind.length();
+ this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner, new NullProgressMonitor());
+
+ assertResults(
+ "CASE_INSENSITIVE_ORDER[FIELD_REF]{CASE_INSENSITIVE_ORDER, Ljava.lang.String;, Ljava.util.Comparator<Ljava.lang.String;>;, CASE_INSENSITIVE_ORDER, null, 49}\n" +
+ "copyValueOf[METHOD_REF]{copyValueOf(), Ljava.lang.String;, ([C)Ljava.lang.String;, copyValueOf, (arg0), 49}\n" +
+ "copyValueOf[METHOD_REF]{copyValueOf(), Ljava.lang.String;, ([CII)Ljava.lang.String;, copyValueOf, (arg0, arg1, arg2), 49}\n" +
+ "format[METHOD_REF]{format(), Ljava.lang.String;, (Ljava.lang.String;[Ljava.lang.Object;)Ljava.lang.String;, format, (arg0, arg1), 49}\n" +
+ "format[METHOD_REF]{format(), Ljava.lang.String;, (Ljava.util.Locale;Ljava.lang.String;[Ljava.lang.Object;)Ljava.lang.String;, format, (arg0, arg1, arg2), 49}\n" +
+ "join[METHOD_REF]{join(), Ljava.lang.String;, (Ljava.lang.CharSequence;Ljava.lang.Iterable<+Ljava.lang.CharSequence;>;)Ljava.lang.String;, join, (arg0, arg1), 49}\n" +
+ "join[METHOD_REF]{join(), Ljava.lang.String;, (Ljava.lang.CharSequence;[Ljava.lang.CharSequence;)Ljava.lang.String;, join, (arg0, arg1), 49}\n" +
+ "valueOf[METHOD_REF]{valueOf(), Ljava.lang.String;, (C)Ljava.lang.String;, valueOf, (arg0), 49}\n" +
+ "valueOf[METHOD_REF]{valueOf(), Ljava.lang.String;, (D)Ljava.lang.String;, valueOf, (arg0), 49}\n" +
+ "valueOf[METHOD_REF]{valueOf(), Ljava.lang.String;, (F)Ljava.lang.String;, valueOf, (arg0), 49}\n" +
+ "valueOf[METHOD_REF]{valueOf(), Ljava.lang.String;, (I)Ljava.lang.String;, valueOf, (arg0), 49}\n" +
+ "valueOf[METHOD_REF]{valueOf(), Ljava.lang.String;, (J)Ljava.lang.String;, valueOf, (arg0), 49}\n" +
+ "valueOf[METHOD_REF]{valueOf(), Ljava.lang.String;, (Ljava.lang.Object;)Ljava.lang.String;, valueOf, (arg0), 49}\n" +
+ "valueOf[METHOD_REF]{valueOf(), Ljava.lang.String;, (Z)Ljava.lang.String;, valueOf, (arg0), 49}\n" +
+ "valueOf[METHOD_REF]{valueOf(), Ljava.lang.String;, ([C)Ljava.lang.String;, valueOf, (arg0), 49}\n" +
+ "valueOf[METHOD_REF]{valueOf(), Ljava.lang.String;, ([CII)Ljava.lang.String;, valueOf, (arg0, arg1, arg2), 49}\n" +
+ "charAt[METHOD_REF]{charAt(), Ljava.lang.String;, (I)C, charAt, (arg0), 60}\n" +
+ "chars[METHOD_REF]{chars(), Ljava.lang.CharSequence;, ()Ljava.util.stream.IntStream;, chars, null, 60}\n" +
+ "clone[METHOD_REF]{clone(), Ljava.lang.Object;, ()Ljava.lang.Object;, clone, null, 60}\n" +
+ "codePointAt[METHOD_REF]{codePointAt(), Ljava.lang.String;, (I)I, codePointAt, (arg0), 60}\n" +
+ "codePointBefore[METHOD_REF]{codePointBefore(), Ljava.lang.String;, (I)I, codePointBefore, (arg0), 60}\n" +
+ "codePointCount[METHOD_REF]{codePointCount(), Ljava.lang.String;, (II)I, codePointCount, (arg0, arg1), 60}\n" +
+ "codePoints[METHOD_REF]{codePoints(), Ljava.lang.CharSequence;, ()Ljava.util.stream.IntStream;, codePoints, null, 60}\n" +
+ "compareTo[METHOD_REF]{compareTo(), Ljava.lang.String;, (Ljava.lang.String;)I, compareTo, (arg0), 60}\n" +
+ "compareToIgnoreCase[METHOD_REF]{compareToIgnoreCase(), Ljava.lang.String;, (Ljava.lang.String;)I, compareToIgnoreCase, (arg0), 60}\n" +
+ "concat[METHOD_REF]{concat(), Ljava.lang.String;, (Ljava.lang.String;)Ljava.lang.String;, concat, (arg0), 60}\n" +
+ "contains[METHOD_REF]{contains(), Ljava.lang.String;, (Ljava.lang.CharSequence;)Z, contains, (arg0), 60}\n" +
+ "contentEquals[METHOD_REF]{contentEquals(), Ljava.lang.String;, (Ljava.lang.CharSequence;)Z, contentEquals, (arg0), 60}\n" +
+ "contentEquals[METHOD_REF]{contentEquals(), Ljava.lang.String;, (Ljava.lang.StringBuffer;)Z, contentEquals, (arg0), 60}\n" +
+ "endsWith[METHOD_REF]{endsWith(), Ljava.lang.String;, (Ljava.lang.String;)Z, endsWith, (arg0), 60}\n" +
+ "equals[METHOD_REF]{equals(), Ljava.lang.String;, (Ljava.lang.Object;)Z, equals, (arg0), 60}\n" +
+ "equalsIgnoreCase[METHOD_REF]{equalsIgnoreCase(), Ljava.lang.String;, (Ljava.lang.String;)Z, equalsIgnoreCase, (arg0), 60}\n" +
+ "finalize[METHOD_REF]{finalize(), Ljava.lang.Object;, ()V, finalize, null, 60}\n" +
+ "getBytes[METHOD_REF]{getBytes(), Ljava.lang.String;, ()[B, getBytes, null, 60}\n" +
+ "getBytes[METHOD_REF]{getBytes(), Ljava.lang.String;, (II[BI)V, getBytes, (arg0, arg1, arg2, arg3), 60}\n" +
+ "getBytes[METHOD_REF]{getBytes(), Ljava.lang.String;, (Ljava.lang.String;)[B, getBytes, (arg0), 60}\n" +
+ "getBytes[METHOD_REF]{getBytes(), Ljava.lang.String;, (Ljava.nio.charset.Charset;)[B, getBytes, (arg0), 60}\n" +
+ "getChars[METHOD_REF]{getChars(), Ljava.lang.String;, (II[CI)V, getChars, (arg0, arg1, arg2, arg3), 60}\n" +
+ "getClass[METHOD_REF]{getClass(), Ljava.lang.Object;, ()Ljava.lang.Class<*>;, getClass, null, 60}\n" +
+ "hashCode[METHOD_REF]{hashCode(), Ljava.lang.String;, ()I, hashCode, null, 60}\n" +
+ "indexOf[METHOD_REF]{indexOf(), Ljava.lang.String;, (I)I, indexOf, (arg0), 60}\n" +
+ "indexOf[METHOD_REF]{indexOf(), Ljava.lang.String;, (II)I, indexOf, (arg0, arg1), 60}\n" +
+ "indexOf[METHOD_REF]{indexOf(), Ljava.lang.String;, (Ljava.lang.String;)I, indexOf, (arg0), 60}\n" +
+ "indexOf[METHOD_REF]{indexOf(), Ljava.lang.String;, (Ljava.lang.String;I)I, indexOf, (arg0, arg1), 60}\n" +
+ "intern[METHOD_REF]{intern(), Ljava.lang.String;, ()Ljava.lang.String;, intern, null, 60}\n" +
+ "isEmpty[METHOD_REF]{isEmpty(), Ljava.lang.String;, ()Z, isEmpty, null, 60}\n" +
+ "lastIndexOf[METHOD_REF]{lastIndexOf(), Ljava.lang.String;, (I)I, lastIndexOf, (arg0), 60}\n" +
+ "lastIndexOf[METHOD_REF]{lastIndexOf(), Ljava.lang.String;, (II)I, lastIndexOf, (arg0, arg1), 60}\n" +
+ "lastIndexOf[METHOD_REF]{lastIndexOf(), Ljava.lang.String;, (Ljava.lang.String;)I, lastIndexOf, (arg0), 60}\n" +
+ "lastIndexOf[METHOD_REF]{lastIndexOf(), Ljava.lang.String;, (Ljava.lang.String;I)I, lastIndexOf, (arg0, arg1), 60}\n" +
+ "length[METHOD_REF]{length(), Ljava.lang.String;, ()I, length, null, 60}\n" +
+ "matches[METHOD_REF]{matches(), Ljava.lang.String;, (Ljava.lang.String;)Z, matches, (arg0), 60}\n" +
+ "notify[METHOD_REF]{notify(), Ljava.lang.Object;, ()V, notify, null, 60}\n" +
+ "notifyAll[METHOD_REF]{notifyAll(), Ljava.lang.Object;, ()V, notifyAll, null, 60}\n" +
+ "offsetByCodePoints[METHOD_REF]{offsetByCodePoints(), Ljava.lang.String;, (II)I, offsetByCodePoints, (arg0, arg1), 60}\n" +
+ "regionMatches[METHOD_REF]{regionMatches(), Ljava.lang.String;, (ILjava.lang.String;II)Z, regionMatches, (arg0, arg1, arg2, arg3), 60}\n" +
+ "regionMatches[METHOD_REF]{regionMatches(), Ljava.lang.String;, (ZILjava.lang.String;II)Z, regionMatches, (arg0, arg1, arg2, arg3, arg4), 60}\n" +
+ "replace[METHOD_REF]{replace(), Ljava.lang.String;, (CC)Ljava.lang.String;, replace, (arg0, arg1), 60}\n" +
+ "replace[METHOD_REF]{replace(), Ljava.lang.String;, (Ljava.lang.CharSequence;Ljava.lang.CharSequence;)Ljava.lang.String;, replace, (arg0, arg1), 60}\n" +
+ "replaceAll[METHOD_REF]{replaceAll(), Ljava.lang.String;, (Ljava.lang.String;Ljava.lang.String;)Ljava.lang.String;, replaceAll, (arg0, arg1), 60}\n" +
+ "replaceFirst[METHOD_REF]{replaceFirst(), Ljava.lang.String;, (Ljava.lang.String;Ljava.lang.String;)Ljava.lang.String;, replaceFirst, (arg0, arg1), 60}\n" +
+ "split[METHOD_REF]{split(), Ljava.lang.String;, (Ljava.lang.String;)[Ljava.lang.String;, split, (arg0), 60}\n" +
+ "split[METHOD_REF]{split(), Ljava.lang.String;, (Ljava.lang.String;I)[Ljava.lang.String;, split, (arg0, arg1), 60}\n" +
+ "startsWith[METHOD_REF]{startsWith(), Ljava.lang.String;, (Ljava.lang.String;)Z, startsWith, (arg0), 60}\n" +
+ "startsWith[METHOD_REF]{startsWith(), Ljava.lang.String;, (Ljava.lang.String;I)Z, startsWith, (arg0, arg1), 60}\n" +
+ "subSequence[METHOD_REF]{subSequence(), Ljava.lang.String;, (II)Ljava.lang.CharSequence;, subSequence, (arg0, arg1), 60}\n" +
+ "substring[METHOD_REF]{substring(), Ljava.lang.String;, (I)Ljava.lang.String;, substring, (arg0), 60}\n" +
+ "substring[METHOD_REF]{substring(), Ljava.lang.String;, (II)Ljava.lang.String;, substring, (arg0, arg1), 60}\n" +
+ "toCharArray[METHOD_REF]{toCharArray(), Ljava.lang.String;, ()[C, toCharArray, null, 60}\n" +
+ "toLowerCase[METHOD_REF]{toLowerCase(), Ljava.lang.String;, ()Ljava.lang.String;, toLowerCase, null, 60}\n" +
+ "toLowerCase[METHOD_REF]{toLowerCase(), Ljava.lang.String;, (Ljava.util.Locale;)Ljava.lang.String;, toLowerCase, (arg0), 60}\n" +
+ "toString[METHOD_REF]{toString(), Ljava.lang.String;, ()Ljava.lang.String;, toString, null, 60}\n" +
+ "toUpperCase[METHOD_REF]{toUpperCase(), Ljava.lang.String;, ()Ljava.lang.String;, toUpperCase, null, 60}\n" +
+ "toUpperCase[METHOD_REF]{toUpperCase(), Ljava.lang.String;, (Ljava.util.Locale;)Ljava.lang.String;, toUpperCase, (arg0), 60}\n" +
+ "trim[METHOD_REF]{trim(), Ljava.lang.String;, ()Ljava.lang.String;, trim, null, 60}\n" +
+ "wait[METHOD_REF]{wait(), Ljava.lang.Object;, ()V, wait, null, 60}\n" +
+ "wait[METHOD_REF]{wait(), Ljava.lang.Object;, (J)V, wait, (millis), 60}\n" +
+ "wait[METHOD_REF]{wait(), Ljava.lang.Object;, (JI)V, wait, (millis, nanos), 60}",
+ requestor.getResults());
+}
+public void testBug539685a() throws Exception {
+ this.workingCopies = new ICompilationUnit[1];
+ this.workingCopies[0] = getWorkingCopy(
+ "Completion/src/ReproduceHang.java",
+ "import java.util.Objects;\n" +
+ "import java.util.function.Function;\n" +
+ "\n" +
+ "public class ReproduceHang {\n" +
+ " public static void main(String[] args) {\n" +
+ " Function<String, Object> localVar = (value -> new Object() {\n" +
+ " private final int i = Objects.requireNull(1);\n" +
+ " });\n" +
+ " }\n" +
+ "}\n");
+ CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true);
+ requestor.allowAllRequiredProposals();
+
+ String str = this.workingCopies[0].getSource();
+ String completeBehind = "Objects.r";
+ int cursorLocation = str.lastIndexOf(completeBehind) + completeBehind.length();
+ this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner, new NullProgressMonitor());
+
+ assertResults(
+ "requireNonNull[METHOD_REF]{requireNonNull, Ljava.util.Objects;, <T:Ljava.lang.Object;>(TT;)TT;, requireNonNull, (arg0), 51}\n" +
+ "requireNonNull[METHOD_REF]{requireNonNull, Ljava.util.Objects;, <T:Ljava.lang.Object;>(TT;Ljava.lang.String;)TT;, requireNonNull, (arg0, arg1), 51}\n" +
+ "requireNonNull[METHOD_REF]{requireNonNull, Ljava.util.Objects;, <T:Ljava.lang.Object;>(TT;Ljava.util.function.Supplier<Ljava.lang.String;>;)TT;, requireNonNull, (arg0, arg1), 51}",
+ requestor.getResults());
+}
+public void testBug558530() throws Exception {
+ this.workingCopies = new ICompilationUnit[2];
+ this.workingCopies[0] = getWorkingCopy(
+ "/Completion/src/Bug558530.java",
+ "import java.util.function.Function;\n" +
+ "\n" +
+ "public class LambdaCrash {\n" +
+ "\n" +
+ " public enum Problem {\n" +
+ " ONE(s -> s.trim())\n" +
+ " TWO(k -> k." +
+ " ;\n" +
+ "\n" +
+ " private final Function<String, String> function;\n" +
+ "\n" +
+ " private Problem(Function<String, String> function) {\n" +
+ " this.function = function;\n" +
+ " }\n" +
+ "\n" +
+ " }\n" +
+ "\n" +
+ "}");
+
+ CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true);
+ requestor.allowAllRequiredProposals();
+
+ String str = this.workingCopies[0].getSource();
+ String completeBehind = "k -> k.";
+ int cursorLocation = str.lastIndexOf(completeBehind) + completeBehind.length();
+ this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner, new NullProgressMonitor());
+
+ assertResults(
+ "CASE_INSENSITIVE_ORDER[FIELD_REF]{CASE_INSENSITIVE_ORDER, Ljava.lang.String;, Ljava.util.Comparator<Ljava.lang.String;>;, CASE_INSENSITIVE_ORDER, null, 49}\n" +
+ "finalize[METHOD_REF]{finalize(), Ljava.lang.Object;, ()V, finalize, null, 55}\n" +
+ "getBytes[METHOD_REF]{getBytes(), Ljava.lang.String;, (II[BI)V, getBytes, (arg0, arg1, arg2, arg3), 55}\n" +
+ "getChars[METHOD_REF]{getChars(), Ljava.lang.String;, (II[CI)V, getChars, (arg0, arg1, arg2, arg3), 55}\n" +
+ "notify[METHOD_REF]{notify(), Ljava.lang.Object;, ()V, notify, null, 55}\n" +
+ "notifyAll[METHOD_REF]{notifyAll(), Ljava.lang.Object;, ()V, notifyAll, null, 55}\n" +
+ "wait[METHOD_REF]{wait(), Ljava.lang.Object;, ()V, wait, null, 55}\n" +
+ "wait[METHOD_REF]{wait(), Ljava.lang.Object;, (J)V, wait, (millis), 55}\n" +
+ "wait[METHOD_REF]{wait(), Ljava.lang.Object;, (JI)V, wait, (millis, nanos), 55}\n" +
+ "charAt[METHOD_REF]{charAt(), Ljava.lang.String;, (I)C, charAt, (arg0), 60}\n" +
+ "chars[METHOD_REF]{chars(), Ljava.lang.CharSequence;, ()Ljava.util.stream.IntStream;, chars, null, 60}\n" +
+ "clone[METHOD_REF]{clone(), Ljava.lang.Object;, ()Ljava.lang.Object;, clone, null, 60}\n" +
+ "codePointAt[METHOD_REF]{codePointAt(), Ljava.lang.String;, (I)I, codePointAt, (arg0), 60}\n" +
+ "codePointBefore[METHOD_REF]{codePointBefore(), Ljava.lang.String;, (I)I, codePointBefore, (arg0), 60}\n" +
+ "codePointCount[METHOD_REF]{codePointCount(), Ljava.lang.String;, (II)I, codePointCount, (arg0, arg1), 60}\n" +
+ "codePoints[METHOD_REF]{codePoints(), Ljava.lang.CharSequence;, ()Ljava.util.stream.IntStream;, codePoints, null, 60}\n" +
+ "compareTo[METHOD_REF]{compareTo(), Ljava.lang.String;, (Ljava.lang.String;)I, compareTo, (arg0), 60}\n" +
+ "compareToIgnoreCase[METHOD_REF]{compareToIgnoreCase(), Ljava.lang.String;, (Ljava.lang.String;)I, compareToIgnoreCase, (arg0), 60}\n" +
+ "contains[METHOD_REF]{contains(), Ljava.lang.String;, (Ljava.lang.CharSequence;)Z, contains, (arg0), 60}\n" +
+ "contentEquals[METHOD_REF]{contentEquals(), Ljava.lang.String;, (Ljava.lang.CharSequence;)Z, contentEquals, (arg0), 60}\n" +
+ "contentEquals[METHOD_REF]{contentEquals(), Ljava.lang.String;, (Ljava.lang.StringBuffer;)Z, contentEquals, (arg0), 60}\n" +
+ "endsWith[METHOD_REF]{endsWith(), Ljava.lang.String;, (Ljava.lang.String;)Z, endsWith, (arg0), 60}\n" +
+ "equals[METHOD_REF]{equals(), Ljava.lang.String;, (Ljava.lang.Object;)Z, equals, (arg0), 60}\n" +
+ "equalsIgnoreCase[METHOD_REF]{equalsIgnoreCase(), Ljava.lang.String;, (Ljava.lang.String;)Z, equalsIgnoreCase, (arg0), 60}\n" +
+ "getBytes[METHOD_REF]{getBytes(), Ljava.lang.String;, ()[B, getBytes, null, 60}\n" +
+ "getBytes[METHOD_REF]{getBytes(), Ljava.lang.String;, (Ljava.lang.String;)[B, getBytes, (arg0), 60}\n" +
+ "getBytes[METHOD_REF]{getBytes(), Ljava.lang.String;, (Ljava.nio.charset.Charset;)[B, getBytes, (arg0), 60}\n" +
+ "getClass[METHOD_REF]{getClass(), Ljava.lang.Object;, ()Ljava.lang.Class<*>;, getClass, null, 60}\n" +
+ "hashCode[METHOD_REF]{hashCode(), Ljava.lang.String;, ()I, hashCode, null, 60}\n" +
+ "indexOf[METHOD_REF]{indexOf(), Ljava.lang.String;, (I)I, indexOf, (arg0), 60}\n" +
+ "indexOf[METHOD_REF]{indexOf(), Ljava.lang.String;, (II)I, indexOf, (arg0, arg1), 60}\n" +
+ "indexOf[METHOD_REF]{indexOf(), Ljava.lang.String;, (Ljava.lang.String;)I, indexOf, (arg0), 60}\n" +
+ "indexOf[METHOD_REF]{indexOf(), Ljava.lang.String;, (Ljava.lang.String;I)I, indexOf, (arg0, arg1), 60}\n" +
+ "isEmpty[METHOD_REF]{isEmpty(), Ljava.lang.String;, ()Z, isEmpty, null, 60}\n" +
+ "lastIndexOf[METHOD_REF]{lastIndexOf(), Ljava.lang.String;, (I)I, lastIndexOf, (arg0), 60}\n" +
+ "lastIndexOf[METHOD_REF]{lastIndexOf(), Ljava.lang.String;, (II)I, lastIndexOf, (arg0, arg1), 60}\n" +
+ "lastIndexOf[METHOD_REF]{lastIndexOf(), Ljava.lang.String;, (Ljava.lang.String;)I, lastIndexOf, (arg0), 60}\n" +
+ "lastIndexOf[METHOD_REF]{lastIndexOf(), Ljava.lang.String;, (Ljava.lang.String;I)I, lastIndexOf, (arg0, arg1), 60}\n" +
+ "length[METHOD_REF]{length(), Ljava.lang.String;, ()I, length, null, 60}\n" +
+ "matches[METHOD_REF]{matches(), Ljava.lang.String;, (Ljava.lang.String;)Z, matches, (arg0), 60}\n" +
+ "offsetByCodePoints[METHOD_REF]{offsetByCodePoints(), Ljava.lang.String;, (II)I, offsetByCodePoints, (arg0, arg1), 60}\n" +
+ "regionMatches[METHOD_REF]{regionMatches(), Ljava.lang.String;, (ILjava.lang.String;II)Z, regionMatches, (arg0, arg1, arg2, arg3), 60}\n" +
+ "regionMatches[METHOD_REF]{regionMatches(), Ljava.lang.String;, (ZILjava.lang.String;II)Z, regionMatches, (arg0, arg1, arg2, arg3, arg4), 60}\n" +
+ "split[METHOD_REF]{split(), Ljava.lang.String;, (Ljava.lang.String;)[Ljava.lang.String;, split, (arg0), 60}\n" +
+ "split[METHOD_REF]{split(), Ljava.lang.String;, (Ljava.lang.String;I)[Ljava.lang.String;, split, (arg0, arg1), 60}\n" +
+ "startsWith[METHOD_REF]{startsWith(), Ljava.lang.String;, (Ljava.lang.String;)Z, startsWith, (arg0), 60}\n" +
+ "startsWith[METHOD_REF]{startsWith(), Ljava.lang.String;, (Ljava.lang.String;I)Z, startsWith, (arg0, arg1), 60}\n" +
+ "subSequence[METHOD_REF]{subSequence(), Ljava.lang.String;, (II)Ljava.lang.CharSequence;, subSequence, (arg0, arg1), 60}\n" +
+ "toCharArray[METHOD_REF]{toCharArray(), Ljava.lang.String;, ()[C, toCharArray, null, 60}\n" +
+ "copyValueOf[METHOD_REF]{copyValueOf(), Ljava.lang.String;, ([C)Ljava.lang.String;, copyValueOf, (arg0), 79}\n" +
+ "copyValueOf[METHOD_REF]{copyValueOf(), Ljava.lang.String;, ([CII)Ljava.lang.String;, copyValueOf, (arg0, arg1, arg2), 79}\n" +
+ "format[METHOD_REF]{format(), Ljava.lang.String;, (Ljava.lang.String;[Ljava.lang.Object;)Ljava.lang.String;, format, (arg0, arg1), 79}\n" +
+ "format[METHOD_REF]{format(), Ljava.lang.String;, (Ljava.util.Locale;Ljava.lang.String;[Ljava.lang.Object;)Ljava.lang.String;, format, (arg0, arg1, arg2), 79}\n" +
+ "join[METHOD_REF]{join(), Ljava.lang.String;, (Ljava.lang.CharSequence;Ljava.lang.Iterable<+Ljava.lang.CharSequence;>;)Ljava.lang.String;, join, (arg0, arg1), 79}\n" +
+ "join[METHOD_REF]{join(), Ljava.lang.String;, (Ljava.lang.CharSequence;[Ljava.lang.CharSequence;)Ljava.lang.String;, join, (arg0, arg1), 79}\n" +
+ "valueOf[METHOD_REF]{valueOf(), Ljava.lang.String;, (C)Ljava.lang.String;, valueOf, (arg0), 79}\n" +
+ "valueOf[METHOD_REF]{valueOf(), Ljava.lang.String;, (D)Ljava.lang.String;, valueOf, (arg0), 79}\n" +
+ "valueOf[METHOD_REF]{valueOf(), Ljava.lang.String;, (F)Ljava.lang.String;, valueOf, (arg0), 79}\n" +
+ "valueOf[METHOD_REF]{valueOf(), Ljava.lang.String;, (I)Ljava.lang.String;, valueOf, (arg0), 79}\n" +
+ "valueOf[METHOD_REF]{valueOf(), Ljava.lang.String;, (J)Ljava.lang.String;, valueOf, (arg0), 79}\n" +
+ "valueOf[METHOD_REF]{valueOf(), Ljava.lang.String;, (Ljava.lang.Object;)Ljava.lang.String;, valueOf, (arg0), 79}\n" +
+ "valueOf[METHOD_REF]{valueOf(), Ljava.lang.String;, (Z)Ljava.lang.String;, valueOf, (arg0), 79}\n" +
+ "valueOf[METHOD_REF]{valueOf(), Ljava.lang.String;, ([C)Ljava.lang.String;, valueOf, (arg0), 79}\n" +
+ "valueOf[METHOD_REF]{valueOf(), Ljava.lang.String;, ([CII)Ljava.lang.String;, valueOf, (arg0, arg1, arg2), 79}\n" +
+ "concat[METHOD_REF]{concat(), Ljava.lang.String;, (Ljava.lang.String;)Ljava.lang.String;, concat, (arg0), 90}\n" +
+ "intern[METHOD_REF]{intern(), Ljava.lang.String;, ()Ljava.lang.String;, intern, null, 90}\n" +
+ "replace[METHOD_REF]{replace(), Ljava.lang.String;, (CC)Ljava.lang.String;, replace, (arg0, arg1), 90}\n" +
+ "replace[METHOD_REF]{replace(), Ljava.lang.String;, (Ljava.lang.CharSequence;Ljava.lang.CharSequence;)Ljava.lang.String;, replace, (arg0, arg1), 90}\n" +
+ "replaceAll[METHOD_REF]{replaceAll(), Ljava.lang.String;, (Ljava.lang.String;Ljava.lang.String;)Ljava.lang.String;, replaceAll, (arg0, arg1), 90}\n" +
+ "replaceFirst[METHOD_REF]{replaceFirst(), Ljava.lang.String;, (Ljava.lang.String;Ljava.lang.String;)Ljava.lang.String;, replaceFirst, (arg0, arg1), 90}\n" +
+ "substring[METHOD_REF]{substring(), Ljava.lang.String;, (I)Ljava.lang.String;, substring, (arg0), 90}\n" +
+ "substring[METHOD_REF]{substring(), Ljava.lang.String;, (II)Ljava.lang.String;, substring, (arg0, arg1), 90}\n" +
+ "toLowerCase[METHOD_REF]{toLowerCase(), Ljava.lang.String;, ()Ljava.lang.String;, toLowerCase, null, 90}\n" +
+ "toLowerCase[METHOD_REF]{toLowerCase(), Ljava.lang.String;, (Ljava.util.Locale;)Ljava.lang.String;, toLowerCase, (arg0), 90}\n" +
+ "toString[METHOD_REF]{toString(), Ljava.lang.String;, ()Ljava.lang.String;, toString, null, 90}\n" +
+ "toUpperCase[METHOD_REF]{toUpperCase(), Ljava.lang.String;, ()Ljava.lang.String;, toUpperCase, null, 90}\n" +
+ "toUpperCase[METHOD_REF]{toUpperCase(), Ljava.lang.String;, (Ljava.util.Locale;)Ljava.lang.String;, toUpperCase, (arg0), 90}\n" +
+ "trim[METHOD_REF]{trim(), Ljava.lang.String;, ()Ljava.lang.String;, trim, null, 90}",
+ requestor.getResults());
+}
+public void testBug548779() throws JavaModelException {
+ this.workingCopies = new ICompilationUnit[2];
+ this.workingCopies[0] = getWorkingCopy(
+ "/Completion/src/test/Test.java",
+ "package test;\n" +
+ "\n" +
+ "public class Test {\n" +
+ " String val = \"\";\n" +
+ " {\n" +
+ "// val.match\n" +
+ " }\n" +
+ "}\n" +
+ "\n" +
+ "interface ConditionChecker {\n" +
+ " boolean check(String line);\n" +
+ "}\n" +
+ "\n" +
+ "enum MyGuesser {\n" +
+ " INT_LONG(\"INT_LONG\", (line) -> {\n" +
+ " return line.contains(\"int\");\n" +
+ " }, (line) -> {\n" +
+ " return line.contains(\"long\");\n" +
+ " });\n" +
+ "\n" +
+ " String name;\n" +
+ " ConditionChecker checker;\n" +
+ " ConditionChecker checkerOld;\n" +
+ "\n" +
+ " MyGuesser(String name, ConditionChecker checker, ConditionChecker checkerOld) {\n" +
+ " this.name = name;\n" +
+ " this.checker = checker;\n" +
+ " this.checkerOld = checkerOld;\n" +
+ " }\n" +
+ "}\n");
+
+ CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true);
+ requestor.allowAllRequiredProposals();
+
+ String str = this.workingCopies[0].getSource();
+ String completeBehind = "line.";
+ int cursorLocation = str.lastIndexOf(completeBehind) + completeBehind.length();
+ this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner, new NullProgressMonitor());
+
+ assertResults(
+ "copyValueOf[METHOD_REF]{copyValueOf, Ljava.lang.String;, ([C)Ljava.lang.String;, copyValueOf, (arg0), 49}\n" +
+ "copyValueOf[METHOD_REF]{copyValueOf, Ljava.lang.String;, ([CII)Ljava.lang.String;, copyValueOf, (arg0, arg1, arg2), 49}\n" +
+ "format[METHOD_REF]{format, Ljava.lang.String;, (Ljava.lang.String;[Ljava.lang.Object;)Ljava.lang.String;, format, (arg0, arg1), 49}\n" +
+ "format[METHOD_REF]{format, Ljava.lang.String;, (Ljava.util.Locale;Ljava.lang.String;[Ljava.lang.Object;)Ljava.lang.String;, format, (arg0, arg1, arg2), 49}\n" +
+ "join[METHOD_REF]{join, Ljava.lang.String;, (Ljava.lang.CharSequence;Ljava.lang.Iterable<+Ljava.lang.CharSequence;>;)Ljava.lang.String;, join, (arg0, arg1), 49}\n" +
+ "join[METHOD_REF]{join, Ljava.lang.String;, (Ljava.lang.CharSequence;[Ljava.lang.CharSequence;)Ljava.lang.String;, join, (arg0, arg1), 49}\n" +
+ "valueOf[METHOD_REF]{valueOf, Ljava.lang.String;, (C)Ljava.lang.String;, valueOf, (arg0), 49}\n" +
+ "valueOf[METHOD_REF]{valueOf, Ljava.lang.String;, (D)Ljava.lang.String;, valueOf, (arg0), 49}\n" +
+ "valueOf[METHOD_REF]{valueOf, Ljava.lang.String;, (F)Ljava.lang.String;, valueOf, (arg0), 49}\n" +
+ "valueOf[METHOD_REF]{valueOf, Ljava.lang.String;, (I)Ljava.lang.String;, valueOf, (arg0), 49}\n" +
+ "valueOf[METHOD_REF]{valueOf, Ljava.lang.String;, (J)Ljava.lang.String;, valueOf, (arg0), 49}\n" +
+ "valueOf[METHOD_REF]{valueOf, Ljava.lang.String;, (Ljava.lang.Object;)Ljava.lang.String;, valueOf, (arg0), 49}\n" +
+ "valueOf[METHOD_REF]{valueOf, Ljava.lang.String;, (Z)Ljava.lang.String;, valueOf, (arg0), 49}\n" +
+ "valueOf[METHOD_REF]{valueOf, Ljava.lang.String;, ([C)Ljava.lang.String;, valueOf, (arg0), 49}\n" +
+ "valueOf[METHOD_REF]{valueOf, Ljava.lang.String;, ([CII)Ljava.lang.String;, valueOf, (arg0, arg1, arg2), 49}\n" +
+ "finalize[METHOD_REF]{finalize, Ljava.lang.Object;, ()V, finalize, null, 55}\n" +
+ "getBytes[METHOD_REF]{getBytes, Ljava.lang.String;, (II[BI)V, getBytes, (arg0, arg1, arg2, arg3), 55}\n" +
+ "getChars[METHOD_REF]{getChars, Ljava.lang.String;, (II[CI)V, getChars, (arg0, arg1, arg2, arg3), 55}\n" +
+ "notify[METHOD_REF]{notify, Ljava.lang.Object;, ()V, notify, null, 55}\n" +
+ "notifyAll[METHOD_REF]{notifyAll, Ljava.lang.Object;, ()V, notifyAll, null, 55}\n" +
+ "wait[METHOD_REF]{wait, Ljava.lang.Object;, ()V, wait, null, 55}\n" +
+ "wait[METHOD_REF]{wait, Ljava.lang.Object;, (J)V, wait, (millis), 55}\n" +
+ "wait[METHOD_REF]{wait, Ljava.lang.Object;, (JI)V, wait, (millis, nanos), 55}\n" +
+ "charAt[METHOD_REF]{charAt, Ljava.lang.String;, (I)C, charAt, (arg0), 60}\n" +
+ "chars[METHOD_REF]{chars, Ljava.lang.CharSequence;, ()Ljava.util.stream.IntStream;, chars, null, 60}\n" +
+ "clone[METHOD_REF]{clone, Ljava.lang.Object;, ()Ljava.lang.Object;, clone, null, 60}\n" +
+ "codePointAt[METHOD_REF]{codePointAt, Ljava.lang.String;, (I)I, codePointAt, (arg0), 60}\n" +
+ "codePointBefore[METHOD_REF]{codePointBefore, Ljava.lang.String;, (I)I, codePointBefore, (arg0), 60}\n" +
+ "codePointCount[METHOD_REF]{codePointCount, Ljava.lang.String;, (II)I, codePointCount, (arg0, arg1), 60}\n" +
+ "codePoints[METHOD_REF]{codePoints, Ljava.lang.CharSequence;, ()Ljava.util.stream.IntStream;, codePoints, null, 60}\n" +
+ "compareTo[METHOD_REF]{compareTo, Ljava.lang.String;, (Ljava.lang.String;)I, compareTo, (arg0), 60}\n" +
+ "compareToIgnoreCase[METHOD_REF]{compareToIgnoreCase, Ljava.lang.String;, (Ljava.lang.String;)I, compareToIgnoreCase, (arg0), 60}\n" +
+ "concat[METHOD_REF]{concat, Ljava.lang.String;, (Ljava.lang.String;)Ljava.lang.String;, concat, (arg0), 60}\n" +
+ "getBytes[METHOD_REF]{getBytes, Ljava.lang.String;, ()[B, getBytes, null, 60}\n" +
+ "getBytes[METHOD_REF]{getBytes, Ljava.lang.String;, (Ljava.lang.String;)[B, getBytes, (arg0), 60}\n" +
+ "getBytes[METHOD_REF]{getBytes, Ljava.lang.String;, (Ljava.nio.charset.Charset;)[B, getBytes, (arg0), 60}\n" +
+ "getClass[METHOD_REF]{getClass, Ljava.lang.Object;, ()Ljava.lang.Class<*>;, getClass, null, 60}\n" +
+ "hashCode[METHOD_REF]{hashCode, Ljava.lang.String;, ()I, hashCode, null, 60}\n" +
+ "indexOf[METHOD_REF]{indexOf, Ljava.lang.String;, (I)I, indexOf, (arg0), 60}\n" +
+ "indexOf[METHOD_REF]{indexOf, Ljava.lang.String;, (II)I, indexOf, (arg0, arg1), 60}\n" +
+ "indexOf[METHOD_REF]{indexOf, Ljava.lang.String;, (Ljava.lang.String;)I, indexOf, (arg0), 60}\n" +
+ "indexOf[METHOD_REF]{indexOf, Ljava.lang.String;, (Ljava.lang.String;I)I, indexOf, (arg0, arg1), 60}\n" +
+ "intern[METHOD_REF]{intern, Ljava.lang.String;, ()Ljava.lang.String;, intern, null, 60}\n" +
+ "lastIndexOf[METHOD_REF]{lastIndexOf, Ljava.lang.String;, (I)I, lastIndexOf, (arg0), 60}\n" +
+ "lastIndexOf[METHOD_REF]{lastIndexOf, Ljava.lang.String;, (II)I, lastIndexOf, (arg0, arg1), 60}\n" +
+ "lastIndexOf[METHOD_REF]{lastIndexOf, Ljava.lang.String;, (Ljava.lang.String;)I, lastIndexOf, (arg0), 60}\n" +
+ "lastIndexOf[METHOD_REF]{lastIndexOf, Ljava.lang.String;, (Ljava.lang.String;I)I, lastIndexOf, (arg0, arg1), 60}\n" +
+ "length[METHOD_REF]{length, Ljava.lang.String;, ()I, length, null, 60}\n" +
+ "offsetByCodePoints[METHOD_REF]{offsetByCodePoints, Ljava.lang.String;, (II)I, offsetByCodePoints, (arg0, arg1), 60}\n" +
+ "replace[METHOD_REF]{replace, Ljava.lang.String;, (CC)Ljava.lang.String;, replace, (arg0, arg1), 60}\n" +
+ "replace[METHOD_REF]{replace, Ljava.lang.String;, (Ljava.lang.CharSequence;Ljava.lang.CharSequence;)Ljava.lang.String;, replace, (arg0, arg1), 60}\n" +
+ "replaceAll[METHOD_REF]{replaceAll, Ljava.lang.String;, (Ljava.lang.String;Ljava.lang.String;)Ljava.lang.String;, replaceAll, (arg0, arg1), 60}\n" +
+ "replaceFirst[METHOD_REF]{replaceFirst, Ljava.lang.String;, (Ljava.lang.String;Ljava.lang.String;)Ljava.lang.String;, replaceFirst, (arg0, arg1), 60}\n" +
+ "split[METHOD_REF]{split, Ljava.lang.String;, (Ljava.lang.String;)[Ljava.lang.String;, split, (arg0), 60}\n" +
+ "split[METHOD_REF]{split, Ljava.lang.String;, (Ljava.lang.String;I)[Ljava.lang.String;, split, (arg0, arg1), 60}\n" +
+ "subSequence[METHOD_REF]{subSequence, Ljava.lang.String;, (II)Ljava.lang.CharSequence;, subSequence, (arg0, arg1), 60}\n" +
+ "substring[METHOD_REF]{substring, Ljava.lang.String;, (I)Ljava.lang.String;, substring, (arg0), 60}\n" +
+ "substring[METHOD_REF]{substring, Ljava.lang.String;, (II)Ljava.lang.String;, substring, (arg0, arg1), 60}\n" +
+ "toCharArray[METHOD_REF]{toCharArray, Ljava.lang.String;, ()[C, toCharArray, null, 60}\n" +
+ "toLowerCase[METHOD_REF]{toLowerCase, Ljava.lang.String;, ()Ljava.lang.String;, toLowerCase, null, 60}\n" +
+ "toLowerCase[METHOD_REF]{toLowerCase, Ljava.lang.String;, (Ljava.util.Locale;)Ljava.lang.String;, toLowerCase, (arg0), 60}\n" +
+ "toString[METHOD_REF]{toString, Ljava.lang.String;, ()Ljava.lang.String;, toString, null, 60}\n" +
+ "toUpperCase[METHOD_REF]{toUpperCase, Ljava.lang.String;, ()Ljava.lang.String;, toUpperCase, null, 60}\n" +
+ "toUpperCase[METHOD_REF]{toUpperCase, Ljava.lang.String;, (Ljava.util.Locale;)Ljava.lang.String;, toUpperCase, (arg0), 60}\n" +
+ "trim[METHOD_REF]{trim, Ljava.lang.String;, ()Ljava.lang.String;, trim, null, 60}\n" +
+ "contains[METHOD_REF]{contains, Ljava.lang.String;, (Ljava.lang.CharSequence;)Z, contains, (arg0), 90}\n" +
+ "contentEquals[METHOD_REF]{contentEquals, Ljava.lang.String;, (Ljava.lang.CharSequence;)Z, contentEquals, (arg0), 90}\n" +
+ "contentEquals[METHOD_REF]{contentEquals, Ljava.lang.String;, (Ljava.lang.StringBuffer;)Z, contentEquals, (arg0), 90}\n" +
+ "endsWith[METHOD_REF]{endsWith, Ljava.lang.String;, (Ljava.lang.String;)Z, endsWith, (arg0), 90}\n" +
+ "equals[METHOD_REF]{equals, Ljava.lang.String;, (Ljava.lang.Object;)Z, equals, (arg0), 90}\n" +
+ "equalsIgnoreCase[METHOD_REF]{equalsIgnoreCase, Ljava.lang.String;, (Ljava.lang.String;)Z, equalsIgnoreCase, (arg0), 90}\n" +
+ "isEmpty[METHOD_REF]{isEmpty, Ljava.lang.String;, ()Z, isEmpty, null, 90}\n" +
+ "matches[METHOD_REF]{matches, Ljava.lang.String;, (Ljava.lang.String;)Z, matches, (arg0), 90}\n" +
+ "regionMatches[METHOD_REF]{regionMatches, Ljava.lang.String;, (ILjava.lang.String;II)Z, regionMatches, (arg0, arg1, arg2, arg3), 90}\n" +
+ "regionMatches[METHOD_REF]{regionMatches, Ljava.lang.String;, (ZILjava.lang.String;II)Z, regionMatches, (arg0, arg1, arg2, arg3, arg4), 90}\n" +
+ "startsWith[METHOD_REF]{startsWith, Ljava.lang.String;, (Ljava.lang.String;)Z, startsWith, (arg0), 90}\n" +
+ "startsWith[METHOD_REF]{startsWith, Ljava.lang.String;, (Ljava.lang.String;I)Z, startsWith, (arg0, arg1), 90}",
+ requestor.getResults());
+}
+public void testBug543617() throws JavaModelException {
+ this.workingCopies = new ICompilationUnit[2];
+ this.workingCopies[0] = getWorkingCopy(
+ "/Completion/src/test/Test.java",
+ "package test.module;\n" +
+ "\n" +
+ "import java.util.Collections;\n" +
+ "import java.util.Iterator;\n" +
+ "import java.util.List;\n" +
+ "\n" +
+ "public class TestApp {\n" +
+ " private <E> void print(Iterator<E> iterator) {\n" +
+ " // doesn't shows chain proposals\n" +
+ " iterator.forEachRemaining(e -> load(C1)); \n" +
+ "\n" +
+ " this.load(C2); \n" +
+ " }\n" +
+ "\n" +
+ " public List<String> findAll() {\n" +
+ " return load(Collections.EMPTY_LIST);\n" +
+ " }\n" +
+ "\n" +
+ " public List<String> load(List<Long> ids) {\n" +
+ " return null;\n" +
+ " }\n" +
+ "}\n");
+
+ CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true);
+ requestor.allowAllRequiredProposals();
+
+ String str = this.workingCopies[0].getSource();
+ String completeBehind = "e -> load(";
+ int cursorLocation = str.lastIndexOf(completeBehind) + completeBehind.length();
+ this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner, new NullProgressMonitor());
+
+ int normalRelevance = R_DEFAULT + R_RESOLVED + R_INTERESTING + R_CASE + R_UNQUALIFIED + R_NON_RESTRICTED;
+ int voidRelevance = R_DEFAULT + R_RESOLVED + R_INTERESTING + R_CASE + R_UNQUALIFIED + R_NON_RESTRICTED + R_VOID;
+ int expectedTypeRelevance = R_DEFAULT + R_RESOLVED + R_INTERESTING + R_CASE + R_UNQUALIFIED + R_NON_RESTRICTED + R_EXACT_EXPECTED_TYPE;
+
+ assertResults(
+ "finalize[METHOD_REF]{finalize(), Ljava.lang.Object;, ()V, finalize, null, "+voidRelevance+"}\n" +
+ "notify[METHOD_REF]{notify(), Ljava.lang.Object;, ()V, notify, null, "+voidRelevance+"}\n" +
+ "notifyAll[METHOD_REF]{notifyAll(), Ljava.lang.Object;, ()V, notifyAll, null, "+voidRelevance+"}\n" +
+ "print[METHOD_REF]{print(), Ltest.TestApp;, <E:Ljava.lang.Object;>(Ljava.util.Iterator<TE;>;)V, print, (iterator), "+voidRelevance+"}\n" +
+ "wait[METHOD_REF]{wait(), Ljava.lang.Object;, ()V, wait, null, "+voidRelevance+"}\n" +
+ "wait[METHOD_REF]{wait(), Ljava.lang.Object;, (J)V, wait, (millis), "+voidRelevance+"}\n" +
+ "wait[METHOD_REF]{wait(), Ljava.lang.Object;, (JI)V, wait, (millis, nanos), "+voidRelevance+"}\n" +
+ "E[TYPE_REF]{E, null, TE;, null, null, "+normalRelevance+"}\n" +
+ "TestApp[TYPE_REF]{TestApp, test, Ltest.TestApp;, null, null, "+normalRelevance+"}\n" +
+ "clone[METHOD_REF]{clone(), Ljava.lang.Object;, ()Ljava.lang.Object;, clone, null, "+normalRelevance+"}\n" +
+ "e[LOCAL_VARIABLE_REF]{e, null, TE;, e, null, "+normalRelevance+"}\n" +
+ "equals[METHOD_REF]{equals(), Ljava.lang.Object;, (Ljava.lang.Object;)Z, equals, (obj), "+normalRelevance+"}\n" +
+ "getClass[METHOD_REF]{getClass(), Ljava.lang.Object;, ()Ljava.lang.Class<*>;, getClass, null, "+normalRelevance+"}\n" +
+ "hashCode[METHOD_REF]{hashCode(), Ljava.lang.Object;, ()I, hashCode, null, "+normalRelevance+"}\n" +
+ "iterator[LOCAL_VARIABLE_REF]{iterator, null, Ljava.util.Iterator<TE;>;, iterator, null, "+normalRelevance+"}\n" +
+ "toString[METHOD_REF]{toString(), Ljava.lang.Object;, ()Ljava.lang.String;, toString, null, "+normalRelevance+"}\n" +
+ "List<java.lang.Long>[TYPE_REF]{List, java.util, Ljava.util.List<Ljava.lang.Long;>;, null, null, "+expectedTypeRelevance+"}\n" +
+ "findAll[METHOD_REF]{findAll(), Ltest.TestApp;, ()Ljava.util.List<Ljava.lang.String;>;, findAll, null, "+expectedTypeRelevance+"}\n" +
+ "load[METHOD_REF]{load(), Ltest.TestApp;, (Ljava.util.List<Ljava.lang.Long;>;)Ljava.util.List<Ljava.lang.String;>;, load, (ids), "+expectedTypeRelevance+"}",
+ requestor.getResults());
+}
+public void testBug539617_alloc() throws JavaModelException {
+ this.workingCopies = new ICompilationUnit[1];
+ this.workingCopies[0] = getWorkingCopy("/Completion/src/CodeCompletion.java",
+ "public class CodeCompletion {\n" +
+ " public static void main(String[] args) {\n" +
+ " new Thread( () -> {\n" +
+ " Double d = new Double(\n" +
+ " });\n" +
+ " }\n" +
+ "}\n");
+ CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true);
+ String str = this.workingCopies[0].getSource();
+ String completeBehind = "new Double(";
+ int cursorLocation = str.lastIndexOf(completeBehind) + completeBehind.length();
+ this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
+ int relevance = R_DEFAULT + R_RESOLVED + R_INTERESTING + R_NON_RESTRICTED;
+ assertResults(
+ "Double[METHOD_REF<CONSTRUCTOR>]{, Ljava.lang.Double;, (D)V, Double, (arg0), "+relevance+"}\n" +
+ "Double[METHOD_REF<CONSTRUCTOR>]{, Ljava.lang.Double;, (Ljava.lang.String;)V, Double, (arg0), "+relevance+"}",
+ requestor.getResults());
+}
+public void testBug539617_msg() throws JavaModelException {
+ this.workingCopies = new ICompilationUnit[1];
+ this.workingCopies[0] = getWorkingCopy("/Completion/src/CodeCompletion.java",
+ "public class CodeCompletion {\n" +
+ " public static void main(String[] args) {\n" +
+ " new Thread( () -> {\n" +
+ " Double d = meth(\n" +
+ " });\n" +
+ " }\n" +
+ " static Double meth(String arg) { return null; }\n" +
+ " static Number meth(String arg, boolean flag) { return null; }\n" +
+ "}\n");
+ CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true);
+ String str = this.workingCopies[0].getSource();
+ String completeBehind = "meth(";
+ int cursorLocation = str.indexOf(completeBehind) + completeBehind.length();
+ this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
+ int relevance = R_DEFAULT + R_RESOLVED + R_INTERESTING + R_CASE + R_EXACT_NAME + R_UNQUALIFIED + R_NON_RESTRICTED;
+ int relevanceExpectedType = R_DEFAULT + R_RESOLVED + R_INTERESTING + R_CASE + R_EXACT_NAME + R_UNQUALIFIED + R_NON_RESTRICTED + R_EXACT_EXPECTED_TYPE;
+ assertResults(
+ "meth[METHOD_REF]{, LCodeCompletion;, (Ljava.lang.String;Z)Ljava.lang.Number;, meth, (arg, flag), "+relevance+"}\n" +
+ "meth[METHOD_REF]{, LCodeCompletion;, (Ljava.lang.String;)Ljava.lang.Double;, meth, (arg), "+relevanceExpectedType+"}",
+ requestor.getResults());
+}
+public void testBug473654_comment33() throws Exception {
+ this.workingCopies = new ICompilationUnit[4];
+ this.workingCopies[0] = getWorkingCopy("/Completion/src/GenericThing.java",
+ "public class GenericThing {}\n");
+ this.workingCopies[1] = getWorkingCopy("/Completion/src/SpecificThing.java",
+ "public class SpecificThing extends GenericThing {}\n");
+ this.workingCopies[2] = getWorkingCopy("/Completion/src/CodeCompletion.java",
+ "import java.util.function.Supplier;\n" +
+ "public class TestCase<S extends GenericThing> {\n" +
+ " TestCase(Supplier<S> s) {}\n" +
+ "}\n");
+ this.workingCopies[3] = getWorkingCopy("/Completion/src/Test.java",
+ "public class Test extends TestCase<SpecificThing> {\n" +
+ " private final Foo foo;\n" +
+ " public Test(Foo foo, Bar bar) {\n" +
+ " super(() -> new SpecificThing(foo, bar) {\n" +
+ " // press Ctrl+Space before the comment\n" +
+ " });\n" +
+ " this.foo = foo;\n" +
+ " }\n" +
+ "}\n");
+ CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true);
+ String str = this.workingCopies[3].getSource();
+ String completeBefore = "// press Ctrl+Space before the comment";
+ int cursorLocation = str.indexOf(completeBefore);
+ this.workingCopies[3].codeComplete(cursorLocation, requestor, this.wcOwner);
+ int newMethodRelevance = R_DEFAULT + R_RESOLVED + R_INTERESTING + R_NON_RESTRICTED;
+ int keywordRelevance = newMethodRelevance + R_CASE;
+ int fieldTypeRelevance = keywordRelevance + R_UNQUALIFIED;
+ int overrideRelevance = keywordRelevance + R_METHOD_OVERIDE;
+ assertResults(
+ "[POTENTIAL_METHOD_DECLARATION]{, LSpecificThing;, ()V, , null, "+newMethodRelevance+"}\n" +
+ "abstract[KEYWORD]{abstract, null, null, abstract, null, "+keywordRelevance+"}\n" +
+ "class[KEYWORD]{class, null, null, class, null, "+keywordRelevance+"}\n" +
+ "enum[KEYWORD]{enum, null, null, enum, null, "+keywordRelevance+"}\n" +
+ "final[KEYWORD]{final, null, null, final, null, "+keywordRelevance+"}\n" +
+ "interface[KEYWORD]{interface, null, null, interface, null, "+keywordRelevance+"}\n" +
+ "native[KEYWORD]{native, null, null, native, null, "+keywordRelevance+"}\n" +
+ "private[KEYWORD]{private, null, null, private, null, "+keywordRelevance+"}\n" +
+ "protected[KEYWORD]{protected, null, null, protected, null, "+keywordRelevance+"}\n" +
+ "public[KEYWORD]{public, null, null, public, null, "+keywordRelevance+"}\n" +
+ "static[KEYWORD]{static, null, null, static, null, "+keywordRelevance+"}\n" +
+ "strictfp[KEYWORD]{strictfp, null, null, strictfp, null, "+keywordRelevance+"}\n" +
+ "synchronized[KEYWORD]{synchronized, null, null, synchronized, null, "+keywordRelevance+"}\n" +
+ "transient[KEYWORD]{transient, null, null, transient, null, "+keywordRelevance+"}\n" +
+ "volatile[KEYWORD]{volatile, null, null, volatile, null, "+keywordRelevance+"}\n" +
+ "Test[TYPE_REF]{Test, , LTest;, null, null, "+fieldTypeRelevance+"}\n" +
+ "clone[METHOD_DECLARATION]{protected Object clone() throws CloneNotSupportedException, Ljava.lang.Object;, ()Ljava.lang.Object;, clone, null, "+overrideRelevance+"}\n" +
+ "equals[METHOD_DECLARATION]{public boolean equals(Object obj), Ljava.lang.Object;, (Ljava.lang.Object;)Z, equals, (obj), "+overrideRelevance+"}\n" +
+ "finalize[METHOD_DECLARATION]{protected void finalize() throws Throwable, Ljava.lang.Object;, ()V, finalize, null, "+overrideRelevance+"}\n" +
+ "hashCode[METHOD_DECLARATION]{public int hashCode(), Ljava.lang.Object;, ()I, hashCode, null, "+overrideRelevance+"}\n" +
+ "toString[METHOD_DECLARATION]{public String toString(), Ljava.lang.Object;, ()Ljava.lang.String;, toString, null, "+overrideRelevance+"}",
+ requestor.getResults());
+}
+public void testBug546097() throws Exception {
+ this.workingCopies = new ICompilationUnit[1];
+ this.workingCopies[0] = getWorkingCopy(
+ "/Completion/src/TestClass.java",
+ "import java.util.concurrent.Callable;\n" +
+ "\n" +
+ "\n" +
+ "public class TestClass {\n" +
+ " public enum TestEnum {\n" +
+ " ENUM1(() -> ),\n" +
+ " ENUM2(() -> );\n" +
+ "\n" +
+ " private Callable<Object> callable;\n" +
+ "\n" +
+ " private TestEnum(Callable<Object> callable) {\n" +
+ " {\n" +
+ " this.callable = callable;\n" +
+ " }\n" +
+ " }\n" +
+ "}\n");
+
+ CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true);
+ requestor.allowAllRequiredProposals();
+
+ String str = this.workingCopies[0].getSource();
+ String completeBehind = "ENUM1(() -> ";
+ int cursorLocation = str.lastIndexOf(completeBehind) + completeBehind.length();
+ this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner, new NullProgressMonitor());
+
+ int expectedTypeRelevance = R_DEFAULT + R_RESOLVED + R_INTERESTING + R_CASE + R_UNQUALIFIED + R_NON_RESTRICTED + R_EXPECTED_TYPE;
+ int exactExpectedTypeRelevance = R_DEFAULT + R_RESOLVED + R_INTERESTING + R_CASE + R_UNQUALIFIED + R_NON_RESTRICTED + R_EXACT_EXPECTED_TYPE;
+
+ assertResults(
+ "ENUM1[FIELD_REF]{ENUM1, LTestClass$TestEnum;, LTestClass$TestEnum;, ENUM1, null, "+expectedTypeRelevance+"}\n" +
+ "ENUM2[FIELD_REF]{ENUM2, LTestClass$TestEnum;, LTestClass$TestEnum;, ENUM2, null, "+expectedTypeRelevance+"}\n" +
+ "TestClass[TYPE_REF]{TestClass, , LTestClass;, null, null, "+expectedTypeRelevance+"}\n" +
+ "valueOf[METHOD_REF]{valueOf(), LTestClass$TestEnum;, (Ljava.lang.String;)LTestClass$TestEnum;, valueOf, (arg0), "+expectedTypeRelevance+"}\n" +
+ "valueOf[METHOD_REF]{valueOf(), Ljava.lang.Enum<LTestClass$TestEnum;>;, <T:Ljava.lang.Enum<TT;>;>(Ljava.lang.Class<TT;>;Ljava.lang.String;)TT;, valueOf, (arg0, arg1), "+expectedTypeRelevance+"}\n" +
+ "values[METHOD_REF]{values(), LTestClass$TestEnum;, ()[LTestClass$TestEnum;, values, null, "+expectedTypeRelevance+"}\n" +
+ "Object[TYPE_REF]{Object, java.lang, Ljava.lang.Object;, null, null, "+exactExpectedTypeRelevance+"}",
+ requestor.getResults());
+}
+public void testBug573105_OnLambdaParamAtNestedMethodInvocationInsideLambda_MemberCompletions() throws JavaModelException {
+ this.workingCopies = new ICompilationUnit[1];
+ this.workingCopies[0] = getWorkingCopy(
+ "/Completion/src/Bug573105.java",
+ "import java.util.stream.Stream;\n" +
+ "import java.nio.file.Files;\n" +
+ "import java.nio.file.Paths;\n" +
+ "\n" +
+ "public class Bug573105 {\n" +
+ " private void test(){ \n" +
+ " Stream.of(new Element()).map(element -> Files.lines(Paths.get(element.)))\n"+
+ " } \n" +
+ " private class Element {\n"+
+ " public java.net.URI foo(){return null;}\n"+
+ " }\n"+
+ "}");
+
+ CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true);
+ requestor.allowAllRequiredProposals();
+
+ String str = this.workingCopies[0].getSource();
+ String completeBehind = "element.";
+ int cursorLocation = str.lastIndexOf(completeBehind) + completeBehind.length();
+ this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner, new NullProgressMonitor());
+
+ String result = requestor.getResults();
+ assertTrue(String.format("Result doesn''t contain method foo (%s)", result),
+ result.contains("foo[METHOD_REF]{foo(), LBug573105$Element;, ()Ljava.net.URI;, foo, null, 60}\n"));
+}
+
+public void testBug573105_OnLambdaParamAtMethodInvocationInsideLambda_MemberCompletions() throws JavaModelException {
+ this.workingCopies = new ICompilationUnit[1];
+ this.workingCopies[0] = getWorkingCopy(
+ "/Completion/src/Bug573105.java",
+ "import java.util.stream.Stream;\n" +
+ "import java.nio.file.Paths;\n" +
+ "\n" +
+ "public class Bug573105 {\n" +
+ " private void test(){ \n" +
+ " Stream.of(new Element()).map(element -> Paths.get(element.))\n"+
+ " } \n" +
+ " private class Element {\n"+
+ " public java.net.URI foo(){return null;}\n"+
+ " }\n"+
+ "}");
+
+ CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true);
+ requestor.allowAllRequiredProposals();
+
+ String str = this.workingCopies[0].getSource();
+ String completeBehind = "element.";
+ int cursorLocation = str.lastIndexOf(completeBehind) + completeBehind.length();
+ this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner, new NullProgressMonitor());
+
+ String result = requestor.getResults();
+ assertTrue(String.format("Result doesn''t contain method foo (%s)", result),
+ result.contains("foo[METHOD_REF]{foo(), LBug573105$Element;, ()Ljava.net.URI;, foo, null, 60}\n"));
+}
+public void testBug573105_OnLambdaParamAtMethodInvocationInsideLambdaWithSemicolon_MemberCompletions() throws JavaModelException {
+ this.workingCopies = new ICompilationUnit[1];
+ this.workingCopies[0] = getWorkingCopy(
+ "/Completion/src/Bug573105.java",
+ "import java.util.stream.Stream;\n" +
+ "import java.nio.file.Files;\n" +
+ "import java.nio.file.Paths;\n" +
+ "\n" +
+ "public class Bug573105 {\n" +
+ " private void test(){ \n" +
+ " Stream.of(new Element()).map(element -> Files.lines(Paths.get(element.)));\n"+
+ " } \n" +
+ " private class Element {\n"+
+ " public java.net.URI foo(){return null;}\n"+
+ " }\n"+
+ "}");
+
+ CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true);
+ requestor.allowAllRequiredProposals();
+
+ String str = this.workingCopies[0].getSource();
+ String completeBehind = "element.";
+ int cursorLocation = str.lastIndexOf(completeBehind) + completeBehind.length();
+ this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner, new NullProgressMonitor());
+
+ String result = requestor.getResults();
+ assertTrue(String.format("Result doesn''t contain method foo (%s)", result),
+ result.contains("foo[METHOD_REF]{foo(), LBug573105$Element;, ()Ljava.net.URI;, foo, null, 60}\n"));
+}
+
+public void testBug573105_OnLambdaParamAtMethodInvocationInsideLambdaBlock_MemberCompletions() throws JavaModelException {
+ this.workingCopies = new ICompilationUnit[1];
+ this.workingCopies[0] = getWorkingCopy(
+ "/Completion/src/Bug573105.java",
+ "import java.util.stream.Stream;\n" +
+ "import java.nio.file.Files;\n" +
+ "import java.nio.file.Paths;\n" +
+ "\n" +
+ "public class Bug573105 {\n" +
+ " private void test(){ \n" +
+ " Stream.of(new Element()).map(element -> {" +
+ " return Files.lines(Paths.get(element.)))\n" +
+ " }"+
+ " } \n" +
+ " private class Element {\n"+
+ " public java.net.URI foo(){return null;}\n"+
+ " }\n"+
+ "}");
+
+ CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true);
+ requestor.allowAllRequiredProposals();
+
+ String str = this.workingCopies[0].getSource();
+ String completeBehind = "element.";
+ int cursorLocation = str.lastIndexOf(completeBehind) + completeBehind.length();
+ this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner, new NullProgressMonitor());
+
+ String result = requestor.getResults();
+ assertTrue(String.format("Result doesn''t contain method foo (%s)", result),
+ result.contains("foo[METHOD_REF]{foo(), LBug573105$Element;, ()Ljava.net.URI;, foo, null, 60}\n"));
+}
+public void testBug573105_OnLambdaParamAtMethodInvocationInsideLambdaInConditional_MemberCompletions() throws JavaModelException {
+ this.workingCopies = new ICompilationUnit[1];
+ this.workingCopies[0] = getWorkingCopy(
+ "/Completion/src/Bug573105.java",
+ "import java.util.stream.Stream;\n" +
+ "import java.nio.file.Paths;\n" +
+ "\n" +
+ "public class Bug573105 {\n" +
+ " private void test(boolean flag){ \n" +
+ " Stream.of(new Element()).map(flag ? null : element -> Paths.get(element.))\n"+
+ " } \n" +
+ " private class Element {\n"+
+ " public java.net.URI foo(){return null;}\n"+
+ " }\n"+
+ "}");
+
+ CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true);
+ requestor.allowAllRequiredProposals();
+
+ String str = this.workingCopies[0].getSource();
+ String completeBehind = "element.";
+ int cursorLocation = str.lastIndexOf(completeBehind) + completeBehind.length();
+ this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner, new NullProgressMonitor());
+
+ String result = requestor.getResults();
+ assertTrue(String.format("Result doesn''t contain method foo (%s)", result),
+ result.contains("foo[METHOD_REF]{foo(), LBug573105$Element;, ()Ljava.net.URI;, foo, null, 60}\n"));
+}
}
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionTests2.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionTests2.java
index 1b7fe13f6..fae985c91 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionTests2.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionTests2.java
@@ -189,7 +189,7 @@ public static Test suite() {
return buildModelTestSuite(CompletionTests2.class);
}
-File createFile(File parent, String name, String content) throws IOException {
+static File createFile(File parent, String name, String content) throws IOException {
File file = new File(parent, name);
FileOutputStream out = new FileOutputStream(file);
try {
@@ -199,11 +199,29 @@ File createFile(File parent, String name, String content) throws IOException {
}
return file;
}
-File createDirectory(File parent, String name) {
+
+static File createDirectory(File parent, String name) {
File dir = new File(parent, name);
dir.mkdirs();
return dir;
}
+
+/**
+ * @return monitor that will answer {@code isCancelled() == true} after one minute
+ */
+static NullProgressMonitor createSelfCancellingMonitor() {
+ NullProgressMonitor monitor = new NullProgressMonitor() {
+ long start = System.currentTimeMillis();
+
+ public boolean isCanceled() {
+ long time = System.currentTimeMillis() - this.start;
+ return time > 60_000; // cancel after 1 minute
+ }
+
+ };
+ return monitor;
+}
+
/**
* Test for bug 29832
*/
@@ -261,14 +279,14 @@ public void testBug29832() throws Exception {
File dest = getWorkspaceRoot().getLocation().toFile();
File pro = createDirectory(dest, "P1");
- this.createFile(pro, ".classpath", "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
+ createFile(pro, ".classpath", "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
"<classpath>\n" +
" <classpathentry kind=\"src\" path=\"src\"/>\n" +
" <classpathentry kind=\"var\" path=\"JCL_LIB\" sourcepath=\"JCL_SRC\" rootpath=\"JCL_SRCROOT\"/>\n" +
" <classpathentry kind=\"output\" path=\"bin\"/>\n" +
"</classpath>");
- this.createFile(pro, ".project",
+ createFile(pro, ".project",
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
"<projectDescription>\n" +
" <name>org.eclipse.jdt.core</name>\n" +
@@ -291,7 +309,7 @@ public void testBug29832() throws Exception {
File pz = createDirectory(src, "pz");
- this.createFile(pz, "ZZZ.java",
+ createFile(pz, "ZZZ.java",
"package pz;\n" +
"public class ZZZ {\n" +
"}");
@@ -386,14 +404,14 @@ public void testBug33560() throws Exception {
File dest = getWorkspaceRoot().getLocation().toFile();
File pro = createDirectory(dest, "P1");
- this.createFile(pro, ".classpath", "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
+ createFile(pro, ".classpath", "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
"<classpath>\n" +
" <classpathentry kind=\"src\" path=\"src\"/>\n" +
" <classpathentry kind=\"var\" path=\"JCL_LIB\" sourcepath=\"JCL_SRC\" rootpath=\"JCL_SRCROOT\"/>\n" +
" <classpathentry kind=\"output\" path=\"bin\"/>\n" +
"</classpath>");
- this.createFile(pro, ".project",
+ createFile(pro, ".project",
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
"<projectDescription>\n" +
" <name>org.eclipse.jdt.core</name>\n" +
@@ -416,7 +434,7 @@ public void testBug33560() throws Exception {
File pz = createDirectory(src, "pz");
- this.createFile(pz, "ZZZ.java",
+ createFile(pz, "ZZZ.java",
"package pz;\n" +
"public class ZZZ {\n" +
"}");
@@ -5181,15 +5199,7 @@ public void testBug281598() throws Exception {
// do completion
CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true, false, false, true, true);
requestor.allowAllRequiredProposals();
- NullProgressMonitor monitor = new NullProgressMonitor() {
- long start = System.currentTimeMillis();
-
- public boolean isCanceled() {
- long time = System.currentTimeMillis() - this.start;
- return time > 1000; // cancel after 1 sec
- }
-
- };
+ NullProgressMonitor monitor = createSelfCancellingMonitor();
String str = this.workingCopies[0].getSource();
String completeBehind = "sys";
@@ -5224,15 +5234,7 @@ public void testBug281598b() throws Exception {
// do completion
CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true, false, false, true, true);
requestor.allowAllRequiredProposals();
- NullProgressMonitor monitor = new NullProgressMonitor() {
- long start = System.currentTimeMillis();
-
- public boolean isCanceled() {
- long time = System.currentTimeMillis() - this.start;
- return time > 1000; // cancel after 1 sec
- }
-
- };
+ NullProgressMonitor monitor = createSelfCancellingMonitor();
String str = this.workingCopies[0].getSource();
String completeBehind = "String";
@@ -5272,15 +5274,7 @@ public void testBug281598c() throws Exception {
// do completion
CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true, false, false, true, true);
requestor.allowAllRequiredProposals();
- NullProgressMonitor monitor = new NullProgressMonitor() {
- long start = System.currentTimeMillis();
-
- public boolean isCanceled() {
- long time = System.currentTimeMillis() - this.start;
- return time > 1000; // cancel after 1 sec
- }
-
- };
+ NullProgressMonitor monitor = createSelfCancellingMonitor();
String completeBehind = "Strin";
int cursorLocation = source.lastIndexOf(completeBehind) + completeBehind.length();
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionTests_1_5.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionTests_1_5.java
index f965a87e6..d5dab60c4 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionTests_1_5.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionTests_1_5.java
@@ -8691,7 +8691,8 @@ public void test0279() throws JavaModelException {
this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
assertResults(
- "zzz2[METHOD_REF]{zzz2(), Ltest.TestCollections;, (Ljava.lang.Object;)V, zzz2, (t), " + (R_DEFAULT + R_RESOLVED + R_INTERESTING + R_CASE + R_NON_INHERITED + R_NON_RESTRICTED) + "}",
+ "zzz2[METHOD_REF]{zzz2(), Ltest.TestCollections;, (Ljava.lang.Object;)V, zzz2, (t), " + (R_DEFAULT + R_RESOLVED + R_INTERESTING + R_CASE + R_NON_RESTRICTED) + "}\n" +
+ "zzz1[METHOD_REF]{zzz1(), Ltest.TestCollections;, (Ljava.lang.Object;)V, zzz1, (t), " + (R_DEFAULT + R_RESOLVED + R_INTERESTING + R_CASE + R_NON_STATIC + R_NON_RESTRICTED) + "}",
requestor.getResults());
}
// https://bugs.eclipse.org/bugs/show_bug.cgi?id=106450
@@ -9274,7 +9275,7 @@ public void test0295() throws JavaModelException {
this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
assertResults(
- "compareTo[METHOD_REF]{compareTo, Ltest.ComparableTest<Ljava.lang.Object;>;, (Ljava.lang.Object;)I, compareTo, (t), " + (R_DEFAULT + R_RESOLVED + R_INTERESTING + R_CASE + R_NON_STATIC + R_NON_RESTRICTED) + "}",
+ "compareTo[METHOD_REF]{compareTo(), Ltest.ComparableTest<Ljava.lang.Object;>;, (Ljava.lang.Object;)I, compareTo, (t), " + (R_DEFAULT + R_RESOLVED + R_INTERESTING + R_CASE + R_NON_STATIC + R_NON_RESTRICTED) + "}",
requestor.getResults());
}
//https://bugs.eclipse.org/bugs/show_bug.cgi?id=99928
@@ -13280,9 +13281,9 @@ public void testFavoriteImports032() throws JavaModelException {
"package test;\n" +
"public class Test extends Test2 {\n" +
" public void method() {\n" +
- " int zelement1\n" +
- " float zelement2\n" +
- " double zelement3\n" +
+ " int zelement1;\n" +
+ " float zelement2;\n" +
+ " double zelement3;\n" +
" foo(0, zelement);\n" +
" }\n" +
"}");
@@ -14652,4 +14653,72 @@ public void test565386() throws JavaModelException {
assertTrue(requestor.getResults().equals(""));
}
+public void testBug532366() throws Exception {
+ this.workingCopies = new ICompilationUnit[2];
+ this.workingCopies[0] = getWorkingCopy(
+ "/Completion/src/test/Color.java",
+ "package test;\n" +
+ "public enum Color {\n" +
+ " GREEN, BLUE;\n" +
+ "}"
+ );
+ this.workingCopies[1] = getWorkingCopy(
+ "/Completion/src/test/Foo.java",
+ "package test;\n" +
+ "public enum Foo {\n" +
+ " Bar(Color.G /* Ctrl+space and nothing happens here */);\n" +
+ " Foo(Color color) {}\n" +
+ "}\n");
+ CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true, true, true, true, true, true);
+ requestor.allowAllRequiredProposals();
+ String str = this.workingCopies[1].getSource();
+ String completeBehind = "Color.G";
+ int cursorLocation = str.lastIndexOf(completeBehind) + completeBehind.length();
+ this.workingCopies[1].codeComplete(cursorLocation, requestor, this.wcOwner);
+ assertEquals("GREEN[FIELD_REF]{GREEN, Ltest.Color;, Ltest.Color;, null, null, GREEN, null, replace[43, 44], token[43, 44], 81}",
+ requestor.getResults());
+}
+public void testBug573279() throws Exception {
+ this.workingCopies = new ICompilationUnit[1];
+ this.workingCopies[0] = getWorkingCopy(
+ "/Completion/src/App.java",
+ "class MyArrayList<T> {\n" +
+ " boolean add(T t) {}\n" +
+ " boolean remove(Object o) {}\n" +
+ " int size() { return 0; }\n" +
+ "}\n" +
+ "\n" +
+ "public class App {\n" +
+ " MyArrayList<String> list = new MyArrayList<String>();\n" +
+ " public static void main(String[] args) {}\n" +
+ "\n" +
+ " private void foo() {\n" +
+ " String template = \"temp\";\n" +
+ " this.list.add(template.concat(\"late\"));\n" +
+ " }\n" +
+ "}"
+ );
+ CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true, true, true, true, true, true);
+ requestor.allowAllRequiredProposals();
+ String str = this.workingCopies[0].getSource();
+ String completeBehind = "this.list.";
+ int cursorLocation = str.lastIndexOf(completeBehind) + completeBehind.length();
+ this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
+ int relevance = R_DEFAULT + R_INTERESTING + R_RESOLVED + R_CASE + R_NON_STATIC + R_NON_RESTRICTED;
+ assertEquals("add[METHOD_REF]{add(), LMyArrayList<Ljava.lang.String;>;, (Ljava.lang.String;)Z, null, null, add, (t), replace[289, 318], token[289, 292], "+relevance+"}\n" +
+ "clone[METHOD_REF]{clone(), Ljava.lang.Object;, ()Ljava.lang.Object;, null, null, clone, null, replace[289, 318], token[289, 292], "+relevance+"}\n" +
+ "equals[METHOD_REF]{equals(), Ljava.lang.Object;, (Ljava.lang.Object;)Z, null, null, equals, (obj), replace[289, 318], token[289, 292], "+relevance+"}\n" +
+ "finalize[METHOD_REF]{finalize(), Ljava.lang.Object;, ()V, null, null, finalize, null, replace[289, 318], token[289, 292], "+relevance+"}\n" +
+ "getClass[METHOD_REF]{getClass(), Ljava.lang.Object;, ()Ljava.lang.Class<+Ljava.lang.Object;>;, null, null, getClass, null, replace[289, 318], token[289, 292], "+relevance+"}\n" +
+ "hashCode[METHOD_REF]{hashCode(), Ljava.lang.Object;, ()I, null, null, hashCode, null, replace[289, 318], token[289, 292], "+relevance+"}\n" +
+ "notify[METHOD_REF]{notify(), Ljava.lang.Object;, ()V, null, null, notify, null, replace[289, 318], token[289, 292], "+relevance+"}\n" +
+ "notifyAll[METHOD_REF]{notifyAll(), Ljava.lang.Object;, ()V, null, null, notifyAll, null, replace[289, 318], token[289, 292], "+relevance+"}\n" +
+ "remove[METHOD_REF]{remove(), LMyArrayList<Ljava.lang.String;>;, (Ljava.lang.Object;)Z, null, null, remove, (o), replace[289, 318], token[289, 292], "+relevance+"}\n" +
+ "size[METHOD_REF]{size(), LMyArrayList<Ljava.lang.String;>;, ()I, null, null, size, null, replace[289, 318], token[289, 292], "+relevance+"}\n" +
+ "toString[METHOD_REF]{toString(), Ljava.lang.Object;, ()Ljava.lang.String;, null, null, toString, null, replace[289, 318], token[289, 292], "+relevance+"}\n" +
+ "wait[METHOD_REF]{wait(), Ljava.lang.Object;, ()V, null, null, wait, null, replace[289, 318], token[289, 292], "+relevance+"}\n" +
+ "wait[METHOD_REF]{wait(), Ljava.lang.Object;, (J)V, null, null, wait, (millis), replace[289, 318], token[289, 292], "+relevance+"}\n" +
+ "wait[METHOD_REF]{wait(), Ljava.lang.Object;, (JI)V, null, null, wait, (millis, nanos), replace[289, 318], token[289, 292], "+relevance+"}",
+ requestor.getResults());
+}
}
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CopyMoveResourcesTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CopyMoveResourcesTests.java
index ab024f735..05f5ca8bb 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CopyMoveResourcesTests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CopyMoveResourcesTests.java
@@ -69,6 +69,7 @@ public IJavaElement copyPositive(IJavaElement element, IJavaElement container, I
for (int i = 0; i < children.length; i++) {
if (children[i] instanceof IPackageDeclaration) {
found = true;
+ break;
}
}
assertTrue("Should not find package decl", !found);
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CopyMoveTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CopyMoveTests.java
index b7df04cad..3a32c004a 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CopyMoveTests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CopyMoveTests.java
@@ -93,6 +93,7 @@ public IJavaElement copyPositive(IJavaElement element, IJavaElement container, I
for (int i = 0; i < children.length; i++) {
if (children[i] instanceof IPackageDeclaration) {
found = true;
+ break;
}
}
assertTrue("Should not find package decl", !found);
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ExternalAnnotations18Test.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ExternalAnnotations18Test.java
index 5024a9ed7..ccb27a7d9 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ExternalAnnotations18Test.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ExternalAnnotations18Test.java
@@ -2445,7 +2445,7 @@ public class ExternalAnnotations18Test extends ModifyingResourceTests {
"public interface List<T> extends java.util.Collection<T> {\n" +
" Stream<T> stream();\n" +
"}\n",
- "Collector.java",
+ "/UnannotatedLib/libs/Collector.java",
"package libs;\n" +
"public interface Collector<T, A, R> { }\n"
}, null);
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaElementDeltaTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaElementDeltaTests.java
index 0c3cf051b..7ba091377 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaElementDeltaTests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaElementDeltaTests.java
@@ -93,13 +93,15 @@ public void testAddCommentAndCommit() throws CoreException {
*/
public void testAddCuInDefaultPkg1() throws CoreException {
try {
- createJavaProject("P", new String[] {""}, "");
startDeltas();
+ createJavaProject("P", new String[] {""}, "");
createFile("P/X.java",
"public class X {\n" +
"}");
assertDeltas(
"Unexpected delta",
+ "P[+]: {}\n" +
+ "\n" +
"P[*]: {CHILDREN}\n" +
" <project root>[*]: {CHILDREN}\n" +
" <default>[*]: {CHILDREN}\n" +
@@ -116,13 +118,15 @@ public void testAddCuInDefaultPkg1() throws CoreException {
*/
public void testAddCuInDefaultPkg2() throws CoreException {
try {
- createJavaProject("P", new String[] {"src"}, "bin");
startDeltas();
+ createJavaProject("P", new String[] {"src"}, "bin");
createFile("P/src/X.java",
"public class X {\n" +
"}");
assertDeltas(
"Unexpected delta",
+ "P[+]: {}\n" +
+ "\n" +
"P[*]: {CHILDREN}\n" +
" src[*]: {CHILDREN}\n" +
" <default>[*]: {CHILDREN}\n" +
@@ -276,12 +280,14 @@ public void _testAddExternalLibFolder2() throws CoreException {
*/
public void testAddExternalLibFolder3() throws CoreException {
try {
- IJavaProject p =createJavaProject("P", new String[0], new String[] {getExternalResourcePath("externalLib")}, "");
startDeltas();
+ IJavaProject p =createJavaProject("P", new String[0], new String[] {getExternalResourcePath("externalLib")}, "");
createExternalFolder("externalLib");
refresh(p);
assertDeltas(
"Unexpected delta",
+ "P[+]: {}\n" +
+ "\n" +
"P[*]: {CHILDREN}\n" +
" "+ getExternalPath() + "externalLib[+]: {}"
);
@@ -298,12 +304,14 @@ public void testAddExternalLibFolder3() throws CoreException {
public void testAddExternalLibFolder4() throws CoreException {
try {
simulateExitRestart();
- IJavaProject p = createJavaProject("P", new String[0], new String[] {getExternalResourcePath("externalLib")}, "");
startDeltas();
+ IJavaProject p = createJavaProject("P", new String[0], new String[] {getExternalResourcePath("externalLib")}, "");
createExternalFolder("externalLib");
refresh(p);
assertDeltas(
"Unexpected delta",
+ "P[+]: {}\n" +
+ "\n" +
"P[*]: {CHILDREN}\n" +
" "+ getExternalPath() + "externalLib[+]: {}"
);
@@ -506,11 +514,13 @@ public void testAddFolderInNonJavaFolder() throws CoreException {
*/
public void testAddInvalidSubfolder() throws CoreException {
try {
- createJavaProject("P");
startDeltas();
+ createJavaProject("P");
createFolder("/P/p/.folder");
assertDeltas(
"Unexpected delta",
+ "P[+]: {}\n" +
+ "\n" +
"P[*]: {CHILDREN}\n" +
" <project root>[*]: {CHILDREN}\n" +
" p[+]: {}"
@@ -548,9 +558,9 @@ public void testAddJavaNature() throws CoreException {
*/
public void testAddJarAndFolderInSource() throws CoreException {
try {
+ startDeltas();
createJavaProject("P", new String[] {""}, new String[] {"/P/lib-1/test.jar"}, "");
- startDeltas();
ResourcesPlugin.getWorkspace().run(
new IWorkspaceRunnable() {
public void run(IProgressMonitor monitor) throws CoreException {
@@ -562,6 +572,8 @@ public void testAddJarAndFolderInSource() throws CoreException {
);
assertDeltas(
"Unexpected delta",
+ "P[+]: {}\n" +
+ "\n" +
"P[*]: {CHILDREN | CONTENT}\n" +
" lib-1/test.jar[+]: {}\n" +
" ResourceDelta(/P/lib-1)[+]"
@@ -643,11 +655,13 @@ public void testAddNonJavaProject() throws CoreException {
}
public void testAddPackageSourceIsBin() throws CoreException {
try {
- createJavaProject("P", new String[] {"src"}, "src");
startDeltas();
+ createJavaProject("P", new String[] {"src"}, "src");
createFolder("P/src/x");
assertDeltas(
"Unexpected delta",
+ "P[+]: {}\n" +
+ "\n" +
"P[*]: {CHILDREN}\n" +
" src[*]: {CHILDREN}\n" +
" x[+]: {}"
@@ -811,8 +825,8 @@ public void testBuildProjectUsedAsLib() throws CoreException {
*/
public void testChangeCustomOutput() throws CoreException {
try {
- IJavaProject proj = createJavaProject("P", new String[] {"src"}, "bin", new String[] {"bin1"});
startDeltas();
+ IJavaProject proj = createJavaProject("P", new String[] {"src"}, "bin", new String[] {"bin1"});
setClasspath(
proj,
new IClasspathEntry[] {
@@ -820,6 +834,8 @@ public void testChangeCustomOutput() throws CoreException {
});
assertDeltas(
"Unexpected delta",
+ "P[+]: {}\n" +
+ "\n" +
"P[*]: {CHILDREN | CONTENT | RAW CLASSPATH CHANGED | RESOLVED CLASSPATH CHANGED}\n" +
" src[*]: {ADDED TO CLASSPATH | REMOVED FROM CLASSPATH}\n" +
" ResourceDelta(/P/.classpath)[*]"
@@ -863,12 +879,14 @@ public void testChangeExportFlag() throws CoreException {
public void testChangeExternalLibFolder1() throws CoreException {
try {
createExternalFolder("externalLib");
- IJavaProject p = createJavaProject("P", new String[0], new String[] {getExternalResourcePath("externalLib")}, "");
startDeltas();
+ IJavaProject p = createJavaProject("P", new String[0], new String[] {getExternalResourcePath("externalLib")}, "");
createExternalFolder("externalLib/p");
refresh(p);
assertDeltas(
"Unexpected delta",
+ "P[+]: {}\n" +
+ "\n" +
"P[*]: {CHILDREN}\n" +
" "+ getExternalPath() + "externalLib[*]: {CHILDREN}\n" +
" p[+]: {}"
@@ -886,12 +904,14 @@ public void testChangeExternalLibFolder1() throws CoreException {
public void testChangeExternalLibFolder2() throws CoreException {
try {
createExternalFolder("externalLib/p");
- IJavaProject p = createJavaProject("P", new String[0], new String[] {getExternalResourcePath("externalLib")}, "");
startDeltas();
+ IJavaProject p = createJavaProject("P", new String[0], new String[] {getExternalResourcePath("externalLib")}, "");
createExternalFile("externalLib/p/X.class", "");
refresh(p);
assertDeltas(
"Unexpected delta",
+ "P[+]: {}\n" +
+ "\n" +
"P[*]: {CHILDREN}\n" +
" "+ getExternalPath() + "externalLib[*]: {CHILDREN}\n" +
" p[*]: {CHILDREN}\n" +
@@ -912,12 +932,14 @@ public void testChangeExternalLibFolder3() throws CoreException {
try {
createExternalFolder("externalLib/p");
createExternalFile("externalLib/p/X.class", "");
- IJavaProject p = createJavaProject("P", new String[0], new String[] {getExternalResourcePath("externalLib")}, "");
startDeltas();
+ IJavaProject p = createJavaProject("P", new String[0], new String[] {getExternalResourcePath("externalLib")}, "");
touch(getExternalFile("externalLib/p/X.class"));
refresh(p);
assertDeltas(
"Unexpected delta",
+ "P[+]: {}\n" +
+ "\n" +
"P[*]: {CHILDREN}\n" +
" "+ getExternalPath() + "externalLib[*]: {CHILDREN}\n" +
" p[*]: {CHILDREN}\n" +
@@ -936,12 +958,14 @@ public void testChangeExternalLibFolder3() throws CoreException {
public void testChangeExternalLibFolder4() throws CoreException {
try {
createExternalFolder("externalLib");
- IJavaProject p = createJavaProject("P", new String[0], new String[] {getExternalResourcePath("externalLib")}, "");
startDeltas();
+ IJavaProject p = createJavaProject("P", new String[0], new String[] {getExternalResourcePath("externalLib")}, "");
createExternalFile("externalLib/test.txt", "test");
refresh(p);
assertDeltas(
"Unexpected delta",
+ "P[+]: {}\n" +
+ "\n" +
"P[*]: {CHILDREN}\n" +
" "+ getExternalPath() + "externalLib[*]: {CONTENT}"
);
@@ -958,12 +982,14 @@ public void testChangeExternalLibFolder4() throws CoreException {
public void testChangeExternalLibFolder5() throws CoreException {
try {
createExternalFolder("externalLib/p");
- IJavaProject p = createJavaProject("P", new String[0], new String[] {getExternalResourcePath("externalLib")}, "");
startDeltas();
+ IJavaProject p = createJavaProject("P", new String[0], new String[] {getExternalResourcePath("externalLib")}, "");
createExternalFile("externalLib/p/test.txt", "test");
refresh(p);
assertDeltas(
"Unexpected delta",
+ "P[+]: {}\n" +
+ "\n" +
"P[*]: {CHILDREN}\n" +
" "+ getExternalPath() + "externalLib[*]: {CHILDREN}\n" +
" p[*]: {CONTENT}"
@@ -1125,8 +1151,8 @@ public void testChangeExternalSourceAttachment() throws CoreException {
*/
public void testChangeRootKind() throws CoreException {
try {
- IJavaProject proj = createJavaProject("P", new String[] {"src"}, "bin");
startDeltas();
+ IJavaProject proj = createJavaProject("P", new String[] {"src"}, "bin");
setClasspath(
proj,
new IClasspathEntry[] {
@@ -1134,6 +1160,8 @@ public void testChangeRootKind() throws CoreException {
});
assertDeltas(
"Unexpected delta",
+ "P[+]: {}\n" +
+ "\n" +
"P[*]: {CHILDREN | CONTENT | RAW CLASSPATH CHANGED | RESOLVED CLASSPATH CHANGED}\n" +
" src[*]: {ADDED TO CLASSPATH | REMOVED FROM CLASSPATH}\n" +
" ResourceDelta(/P/.classpath)[*]"
@@ -1149,12 +1177,14 @@ public void testChangeRootKind() throws CoreException {
*/
public void testCloseJavaProject() throws CoreException {
try {
+ startDeltas();
createJavaProject("P", new String[] {""}, "");
IProject project = getProject("P");
- startDeltas();
project.close(null);
assertDeltas(
"Unexpected delta",
+ "P[+]: {}\n" +
+ "\n" +
"P[*]: {CLOSED}\n" +
"ResourceDelta(/P)"
);
@@ -1170,8 +1200,8 @@ public void testCloseJavaProject() throws CoreException {
public void testCloseNonJavaProject() throws CoreException {
try {
createProject("P");
- IProject project = getProject("P");
startDeltas();
+ IProject project = getProject("P");
project.close(null);
assertDeltas(
"Unexpected delta",
@@ -1782,8 +1812,8 @@ public void testListenerReconcile() throws CoreException {
*/
public void testMergeResourceDeltas() throws CoreException {
try {
- createJavaProject("P", new String[] {""}, "");
startDeltas();
+ createJavaProject("P", new String[] {""}, "");
ResourcesPlugin.getWorkspace().run(
new IWorkspaceRunnable() {
public void run(IProgressMonitor monitor) throws CoreException {
@@ -1804,6 +1834,8 @@ public void testMergeResourceDeltas() throws CoreException {
);
assertDeltas(
"Unexpected delta",
+ "P[+]: {}\n" +
+ "\n" +
"P[*]: {CHILDREN | CONTENT}\n" +
" <project root>[*]: {CHILDREN}\n" +
" <default>[*]: {CHILDREN}\n" +
@@ -1860,13 +1892,13 @@ public void testModifyMethodBodyAndSave() throws CoreException {
*/
public void testModifyOutputLocation1() throws CoreException {
try {
+ startDeltas();
createJavaProject("P", new String[] {"src"}, "bin");
- startDeltas();
createFile("/P/bin/X.class", "");
assertDeltas(
"Unexpected delta",
- ""
+ "P[+]: {}"
);
} finally {
stopDeltas();
@@ -1879,13 +1911,13 @@ public void testModifyOutputLocation1() throws CoreException {
*/
public void testModifyOutputLocation2() throws CoreException {
try {
+ startDeltas();
createJavaProject("P", new String[] {"src"}, "bin1", new String[] {"bin2"});
- startDeltas();
createFile("/P/bin2/X.class", "");
assertDeltas(
"Unexpected delta",
- ""
+ "P[+]: {}"
);
} finally {
stopDeltas();
@@ -1898,13 +1930,13 @@ public void testModifyOutputLocation2() throws CoreException {
*/
public void testModifyOutputLocation3() throws CoreException {
try {
+ startDeltas();
createJavaProject("P", new String[] {"src1", "src2"}, "bin", new String[] {"src1", null});
- startDeltas();
createFile("/P/bin/X.class", "");
assertDeltas(
"Unexpected delta",
- ""
+ "P[+]: {}"
);
} finally {
stopDeltas();
@@ -2217,12 +2249,14 @@ public void testOverwriteClasspath() throws CoreException {
*/
public void testPackageFragmentAddAndRemove() throws CoreException {
try {
+ startDeltas();
createJavaProject("P", new String[] {"src"}, "bin");
- startDeltas();
IFolder folder = createFolder("/P/src/p");
assertDeltas(
"Unexpected delta",
+ "P[+]: {}\n" +
+ "\n" +
"P[*]: {CHILDREN}\n" +
" src[*]: {CHILDREN}\n" +
" p[+]: {}"
@@ -2270,12 +2304,14 @@ public void testPackageFragmentMove() throws CoreException {
*/
public void testPackageFragmentRootRemoveAndAdd() throws CoreException {
try {
+ startDeltas();
createJavaProject("P", new String[] {"src"}, "bin");
- startDeltas();
deleteFolder("/P/src");
assertDeltas(
"Unexpected delta after deleting /P/src",
+ "P[+]: {}\n" +
+ "\n" +
"P[*]: {CHILDREN}\n" +
" src[-]: {}"
);
@@ -2334,8 +2370,8 @@ public void testRemoveAddBinaryProject() throws CoreException {
*/
public void testRemoveAddJavaProject() throws CoreException {
try {
- createJavaProject("P", new String[] {""}, "");
startDeltas();
+ createJavaProject("P", new String[] {""}, "");
getWorkspace().run(
new IWorkspaceRunnable() {
public void run(IProgressMonitor monitor) throws CoreException {
@@ -2346,6 +2382,8 @@ public void testRemoveAddJavaProject() throws CoreException {
null);
assertDeltas(
"Unexpected delta",
+ "P[+]: {}\n" +
+ "\n" +
"P[*]: {CONTENT}\n" +
" ResourceDelta(/P/.classpath)[*]\n" +
" ResourceDelta(/P/.project)[*]"
@@ -2463,11 +2501,13 @@ public void testRemoveCPEntryAndRoot3() throws CoreException {
*/
public void testRemoveDotClasspathFile() throws CoreException {
try {
- createJavaProject("P", new String[] {"src"}, "bin");
startDeltas();
+ createJavaProject("P", new String[] {"src"}, "bin");
moveFile("P/.classpath", "P/.classpath2");
assertDeltas(
"Unexpected delta",
+ "P[+]: {}\n" +
+ "\n" +
"P[*]: {CHILDREN | CONTENT | RAW CLASSPATH CHANGED | RESOLVED CLASSPATH CHANGED}\n" +
" <project root>[*]: {CHILDREN | ADDED TO CLASSPATH}\n" +
" bin[+]: {}\n" +
@@ -2487,11 +2527,13 @@ public void testRemoveDotClasspathFile() throws CoreException {
public void testRemoveExternalLibFolder1() throws CoreException {
try {
createExternalFolder("externalLib");
- IJavaProject p = createJavaProject("P", new String[0], new String[] {getExternalResourcePath("externalLib")}, "");
startDeltas();
+ IJavaProject p = createJavaProject("P", new String[0], new String[] {getExternalResourcePath("externalLib")}, "");
setClasspath(p, new IClasspathEntry[] {});
assertDeltas(
"Unexpected delta",
+ "P[+]: {}\n" +
+ "\n" +
"P[*]: {CHILDREN | CONTENT | RAW CLASSPATH CHANGED | RESOLVED CLASSPATH CHANGED}\n" +
" "+ getExternalPath() + "externalLib[*]: {REMOVED FROM CLASSPATH}\n" +
" ResourceDelta(/P/.classpath)[*]"
@@ -2508,11 +2550,13 @@ public void testRemoveExternalLibFolder1() throws CoreException {
*/
public void testRemoveExternalLibFolder2() throws CoreException {
try {
- IJavaProject p = createJavaProject("P", new String[0], new String[] {getExternalResourcePath("externalLib")}, "");
startDeltas();
+ IJavaProject p = createJavaProject("P", new String[0], new String[] {getExternalResourcePath("externalLib")}, "");
setClasspath(p, new IClasspathEntry[] {});
assertDeltas(
"Unexpected delta",
+ "P[+]: {}\n" +
+ "\n" +
"P[*]: {CHILDREN | CONTENT | RAW CLASSPATH CHANGED | RESOLVED CLASSPATH CHANGED}\n" +
" "+ getExternalPath() + "externalLib[*]: {REMOVED FROM CLASSPATH}\n" +
" ResourceDelta(/P/.classpath)[*]"
@@ -2529,12 +2573,14 @@ public void testRemoveExternalLibFolder2() throws CoreException {
public void testRemoveExternalLibFolder3() throws CoreException {
try {
createExternalFolder("externalLib");
- IJavaProject p = createJavaProject("P", new String[0], new String[] {getExternalResourcePath("externalLib")}, "");
startDeltas();
+ IJavaProject p = createJavaProject("P", new String[0], new String[] {getExternalResourcePath("externalLib")}, "");
deleteExternalResource("externalLib");
refresh(p);
assertDeltas(
"Unexpected delta",
+ "P[+]: {}\n" +
+ "\n" +
"P[*]: {CHILDREN}\n" +
" "+ getExternalPath() + "externalLib[-]: {}"
);
@@ -2553,12 +2599,14 @@ public void testRemoveExternalLibFolder4() throws CoreException {
try {
simulateExitRestart();
createExternalFolder("externalLib");
- IJavaProject p = createJavaProject("P", new String[0], new String[] {getExternalResourcePath("externalLib")}, "");
startDeltas();
+ IJavaProject p = createJavaProject("P", new String[0], new String[] {getExternalResourcePath("externalLib")}, "");
deleteExternalResource("externalLib");
refresh(p);
assertDeltas(
"Unexpected delta",
+ "P[+]: {}\n" +
+ "\n" +
"P[*]: {CHILDREN}\n" +
" "+ getExternalPath() + "externalLib[-]: {}"
);
@@ -2691,11 +2739,13 @@ public void testRemoveZIPArchive5() throws CoreException {
*/
public void testRemoveJavaNature() throws CoreException {
try {
- createJavaProject("P", new String[] {""}, "");
startDeltas();
+ createJavaProject("P", new String[] {""}, "");
removeJavaNature("P");
assertDeltas(
"Unexpected delta",
+ "P[+]: {}\n" +
+ "\n" +
"P[-]: {}\n" +
"ResourceDelta(/P)"
);
@@ -2706,11 +2756,13 @@ public void testRemoveJavaNature() throws CoreException {
}
public void testRemoveJavaProject() throws CoreException {
try {
- createJavaProject("P", new String[] {""}, "");
startDeltas();
+ createJavaProject("P", new String[] {""}, "");
deleteProject("P");
assertDeltas(
"Unexpected delta",
+ "P[+]: {}\n" +
+ "\n" +
"P[-]: {}"
);
} finally {
@@ -2846,11 +2898,13 @@ public void testRemoveNonJavaResourceJar() throws CoreException {
*/
public void testRenameJavaProject() throws CoreException {
try {
- createJavaProject("P", new String[] {""}, "");
startDeltas();
+ createJavaProject("P", new String[] {""}, "");
renameProject("P", "P1");
assertDeltas(
"Unexpected delta",
+ "P[+]: {}\n" +
+ "\n" +
"P1[+]: {MOVED_FROM(P)}\n" +
"P[-]: {MOVED_TO(P1)}"
);
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaModelManagerTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaModelManagerTests.java
index 056719184..703d8bd7f 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaModelManagerTests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaModelManagerTests.java
@@ -97,7 +97,7 @@ public class JavaModelManagerTests extends AbstractJavaModelTests {
return threads;
}
- class CheckIfTypeExists implements Runnable {
+ static class CheckIfTypeExists implements Runnable {
private final IJavaProject project;
private final CountDownLatch latch;
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchBugs16Tests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchBugs16Tests.java
index 9381ab606..c78cf3095 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchBugs16Tests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchBugs16Tests.java
@@ -24,7 +24,11 @@ import org.eclipse.jdt.core.search.IJavaSearchScope;
import org.eclipse.jdt.core.search.ReferenceMatch;
import org.eclipse.jdt.core.search.SearchEngine;
import org.eclipse.jdt.core.search.SearchMatch;
+import org.eclipse.jdt.core.search.SearchParticipant;
+import org.eclipse.jdt.core.search.SearchPattern;
import org.eclipse.jdt.core.search.TypeReferenceMatch;
+import org.eclipse.jdt.internal.core.SourceType;
+import org.eclipse.jdt.internal.core.search.matching.DeclarationOfAccessedFieldsPattern;
import junit.framework.Test;
@@ -422,6 +426,36 @@ public class JavaSearchBugs16Tests extends AbstractJavaSearchTests {
+ "src/X.java void X.foo():C#1 [Inter] EXACT_MATCH");
}
+ public void testBug572100 () throws CoreException {
+ this.workingCopies = new ICompilationUnit[1];
+ this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/Bug572100/X.java",
+ "public interface X {\n"+
+ " interface inter1 {\n"+
+ " record record1(Class<?> type) implements inter1 {\n"+
+ " public record1 {\n"+
+ " if (!type.isPrimitive()) {\n"+
+ " }\n"+
+ " }\n"+
+ " }\n"+
+ " }\n"+
+ "}\n"
+ );
+ String str = this.workingCopies[0].getSource();
+ String selection = "inter1";
+ int start = str.indexOf(selection);
+ int length = selection.length();
+ IJavaElement[] elements = this.workingCopies[0].codeSelect(start, length);
+ SourceType st = (SourceType)elements[0];
+ SearchPattern pattern = new DeclarationOfAccessedFieldsPattern(st);
+ new SearchEngine(this.workingCopies).search(pattern,
+ new SearchParticipant[] {SearchEngine.getDefaultSearchParticipant()},
+ getJavaSearchWorkingCopiesScope(),
+ this.resultCollector,
+ null);
+ assertSearchResults(
+ ""
+ );
+ }
}
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/NullAnnotationModelTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/NullAnnotationModelTests.java
index 95902cde6..68ff77fb3 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/NullAnnotationModelTests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/NullAnnotationModelTests.java
@@ -76,7 +76,7 @@ public class NullAnnotationModelTests extends ReconcilerTests {
}
static {
-// TESTS_NAMES = new String[] { "testConvertedSourceType1" };
+ TESTS_NAMES = new String[] { "testTargetTypeUse" };
}
/**
@@ -965,8 +965,18 @@ public class NullAnnotationModelTests extends ReconcilerTests {
IType nonNull = project.findType(NonNull.class.getName());
IAnnotation annot = nonNull.getAnnotation(Target.class.getName());
for (IMemberValuePair memberValuePair : annot.getMemberValuePairs()) {
- if (memberValuePair.getValue().equals(ElementType.class.getName()+'.'+ElementType.TYPE_USE))
- return;
+ Object value = memberValuePair.getValue();
+ if(value instanceof Object[]) {
+ Object[] arr = (Object[]) value;
+ for (Object object : arr) {
+ if (object.equals(ElementType.class.getName()+'.'+ElementType.TYPE_USE)) {
+ return;
+ }
+ }
+ } else {
+ if (value.equals(ElementType.class.getName()+'.'+ElementType.TYPE_USE))
+ return;
+ }
}
fail("TYPE_USE target not found");
} finally {
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/OverflowingCacheTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/OverflowingCacheTests.java
index 87b756cd0..3f5547097 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/OverflowingCacheTests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/OverflowingCacheTests.java
@@ -40,7 +40,7 @@ public class OverflowingCacheTests extends ModifyingResourceTests {
* A OverflowingTestBuffer is created with/without saved changes (determined
* by client), and is opened on creation.
*/
- public class OverflowingTestBuffer implements IBuffer {
+ public static class OverflowingTestBuffer implements IBuffer {
/**
* True if this buffer is open, otherwise false.
*/
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ReconcilerTests16.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ReconcilerTests16.java
new file mode 100644
index 000000000..0ac83828a
--- /dev/null
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ReconcilerTests16.java
@@ -0,0 +1,199 @@
+/*******************************************************************************
+ * Copyright (c) 2021 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * This is an implementation of an early-draft specification developed under the Java
+ * Community Process (JCP) and is made available for testing and evaluation purposes
+ * only. The code is not compatible with any specification of the JCP.
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jdt.core.tests.model;
+
+
+import org.eclipse.core.resources.IMarker;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IncrementalProjectBuilder;
+import org.eclipse.jdt.core.ICompilationUnit;
+import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jdt.core.IProblemRequestor;
+import org.eclipse.jdt.core.JavaCore;
+import org.eclipse.jdt.core.JavaModelException;
+import org.eclipse.jdt.core.WorkingCopyOwner;
+import org.eclipse.jdt.core.dom.AST;
+import junit.framework.Test;
+
+public class ReconcilerTests16 extends ModifyingResourceTests {
+
+ protected ICompilationUnit workingCopy;
+ protected ProblemRequestor problemRequestor;
+
+ /*package*/ static final int JLS_LATEST = AST.JLS16;
+
+/**
+ */
+public ReconcilerTests16(String name) {
+ super(name);
+}
+// Use this static initializer to specify subset for tests
+// All specified tests which do not belong to the class are skipped...
+static {
+// JavaModelManager.VERBOSE = true;
+// TESTS_PREFIX = "testAnnotations";
+// TESTS_NAMES = new String[] { "testBug564289_001" };
+// TESTS_NUMBERS = new int[] { 118823 };
+// TESTS_RANGE = new int[] { 16, -1 };
+}
+public static Test suite() {
+ return buildModelTestSuite(ReconcilerTests16.class);
+}
+protected void assertProblems(String message, String expected) {
+ assertProblems(message, expected, this.problemRequestor);
+}
+/**
+ * Setup for the next test.
+ */
+@Override
+public void setUp() throws Exception {
+ super.setUp();
+ this.problemRequestor = new ProblemRequestor();
+ this.wcOwner = new WorkingCopyOwner() {
+ public IProblemRequestor getProblemRequestor(ICompilationUnit unit) {
+ return ReconcilerTests16.this.problemRequestor;
+ }
+ };
+ this.workingCopy = getCompilationUnit("Reconciler16/src/module-info.java").getWorkingCopy(this.wcOwner, null);
+ this.problemRequestor.initialize(this.workingCopy.getSource().toCharArray());
+ startDeltas();
+}
+@Override
+public void setUpSuite() throws Exception {
+ super.setUpSuite();
+
+ // Create project with 16 compliance
+ IJavaProject project16 = createJava9Project("Reconciler16");
+ project16.setOption(JavaCore.COMPILER_SOURCE, JavaCore.VERSION_16);
+ project16.setOption(JavaCore.COMPILER_PB_UNUSED_LOCAL, JavaCore.IGNORE);
+ project16.setOption(JavaCore.COMPILER_PB_INVALID_JAVADOC, JavaCore.WARNING);
+
+
+}
+protected void setUpWorkingCopy(String path, String contents) throws JavaModelException {
+ setUpWorkingCopy(path, contents, this.wcOwner);
+}
+private void setUpWorkingCopy(String path, String contents, WorkingCopyOwner owner) throws JavaModelException {
+ this.workingCopy.discardWorkingCopy();
+ this.workingCopy = getCompilationUnit(path).getWorkingCopy(owner, null);
+ assertEquals("Invalid problem requestor!", this.problemRequestor, this.wcOwner.getProblemRequestor(this.workingCopy));
+ setWorkingCopyContents(contents);
+ this.workingCopy.makeConsistent(null);
+}
+void setWorkingCopyContents(String contents) throws JavaModelException {
+ this.workingCopy.getBuffer().setContents(contents);
+ this.problemRequestor.initialize(contents.toCharArray());
+}
+/**
+ * Cleanup after the previous test.
+ */
+@Override
+public void tearDown() throws Exception {
+ TestCompilationParticipant.PARTICIPANT = null;
+ if (this.workingCopy != null) {
+ this.workingCopy.discardWorkingCopy();
+ }
+ stopDeltas();
+ super.tearDown();
+}
+@Override
+public void tearDownSuite() throws Exception {
+ deleteProject("Reconciler16");
+ super.tearDownSuite();
+}
+public void testBug570399_001() throws Exception {
+ if (!isJRE16)
+ return;
+ IJavaProject p = createJava16Project("p");
+ try {
+ createFile("p/src/X.java",
+ "public class X {\n"+
+ " public static void main(String[] args) {\n"+
+ " R r1 = new R( 2, 3); // Wrong error: The constructor MyRecord(int, int) is undefined\n"+
+ " R r2 = new R(); // works\n"+
+ " int total = r1.x()+r2.x()+r1.y()+r2.y();\n"+
+ " System.out.println(\"Hi\"+total);\n"+
+ " }\n"+
+ "}");
+ createFile("p/src/R.java",
+ "public record R(int x, int y) {\n"+
+ " R() {\n"+
+ " this(0, 0);\n"+
+ " }\n"+
+ "}");
+
+ p.getProject().build(IncrementalProjectBuilder.FULL_BUILD, null);
+ IMarker[] markers = p.getProject().findMarkers(null, true, IResource.DEPTH_INFINITE);
+ assertMarkers("markers in p",
+ "",
+ markers);
+
+ this.workingCopy = getCompilationUnit("p/src/X.java").getWorkingCopy(this.wcOwner, null);
+ this.problemRequestor.initialize(this.workingCopy.getSource().toCharArray());
+ this.workingCopy.reconcile(JLS_LATEST, true, this.wcOwner, null);
+ assertProblems("Expecting no problems",
+ "----------\n" +
+ "----------\n",
+ this.problemRequestor);
+ this.workingCopy.discardWorkingCopy();
+ } finally {
+ deleteProject(p);
+ }
+}
+public void _testBug570399_002() throws Exception {
+ if (!isJRE16)
+ return;
+ IJavaProject p = createJava16Project("p");
+ try {
+ createFile("p/src/X.java",
+ "public class X {\n"+
+ " public static void main(String[] args) {\n"+
+ " R r1 = new R( 2, 3); // Wrong error: The constructor MyRecord(int, int) is undefined\n"+
+ " R r2 = new R(); // works\n"+
+ " int total = r1.x()+r2.x()+r1.y()+r2.y();\n"+
+ " System.out.println(\"Hi\"+total);\n"+
+ " }\n"+
+ "}");
+ createFile("p/src/R.java",
+ "class R {\n"+
+ " int x, y;\n"+
+ " int x() { return this.x;}\n"+
+ " int y() { return this.y;}\n"+
+ " R(int x, int y) {\n"+
+ " this.x = x; this.y = y;\n"+
+ " }\n"+
+ "}");
+
+ p.getProject().build(IncrementalProjectBuilder.FULL_BUILD, null);
+ IMarker[] markers = p.getProject().findMarkers(null, true, IResource.DEPTH_INFINITE);
+ assertMarkers("markers in p",
+ "",
+ markers);
+
+ this.workingCopy = getCompilationUnit("p/src/X.java").getWorkingCopy(this.wcOwner, null);
+ this.problemRequestor.initialize(this.workingCopy.getSource().toCharArray());
+ this.workingCopy.reconcile(JLS_LATEST, true, this.wcOwner, null);
+ assertProblems("Expecting no problems",
+ "",
+ this.problemRequestor);
+ this.workingCopy.discardWorkingCopy();
+ } finally {
+ deleteProject(p);
+ }
+}
+}
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/SearchTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/SearchTests.java
index 7532db71b..ad4ea6d8c 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/SearchTests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/SearchTests.java
@@ -55,7 +55,7 @@ public class SearchTests extends ModifyingResourceTests implements IJavaSearchCo
System.out.print("}");
*/
static final byte[] EMPTY_JAR = {80, 75, 3, 4, 20, 0, 8, 0, 8, 0, 106, -100, 116, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 4, 0, 77, 69, 84, 65, 45, 73, 78, 70, 47, 77, 65, 78, 73, 70, 69, 83, 84, 46, 77, 70, -2, -54, 0, 0, -29, -27, 2, 0, 80, 75, 7, 8, -84, -123, -94, 20, 4, 0, 0, 0, 2, 0, 0, 0, 80, 75, 1, 2, 20, 0, 20, 0, 8, 0, 8, 0, 106, -100, 116, 46, -84, -123, -94, 20, 4, 0, 0, 0, 2, 0, 0, 0, 20, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 69, 84, 65, 45, 73, 78, 70, 47, 77, 65, 78, 73, 70, 69, 83, 84, 46, 77, 70, -2, -54, 0, 0, 80, 75, 5, 6, 0, 0, 0, 0, 1, 0, 1, 0, 70, 0, 0, 0, 74, 0, 0, 0, 0, 0, };
- class WaitUntilReadyMonitor implements IProgressMonitor {
+ static class WaitUntilReadyMonitor implements IProgressMonitor {
public Semaphore sem = new Semaphore();
public void beginTask(String name, int totalWork) {
}
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/TypeHierarchyTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/TypeHierarchyTests.java
index 83da7ab73..cd8e17d93 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/TypeHierarchyTests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/TypeHierarchyTests.java
@@ -3364,4 +3364,34 @@ public void testBug559210() throws CoreException {
deleteProject("P");
}
}
+/**
+ * @bug 457813: StackOverflowError while computing launch button tooltip
+ * @test Verify that StackOverflowException does no longer occur with the given test case
+ * @see "https://bugs.eclipse.org/bugs/show_bug.cgi?id=457813"
+ */
+public void testBug457813() throws CoreException {
+ try {
+ createJavaProject("P", new String[] { "src" }, new String[] { "JCL_LIB", "/TypeHierarchy/test457813.jar" },
+ "bin");
+ createFolder("/P/src/hierarchy");
+ createFile(
+ "/P/src/hierarchy/X.java",
+ "pakage hierarchy;\n" +
+ "public class X extends aspose.b.a.a {\n" +
+ "}"
+ );
+ IType type = getCompilationUnit("P", "src", "hierarchy", "X.java").getType("X");
+ assertTrue("Type should exist!", type.exists());
+ ITypeHierarchy hierarchy = type.newTypeHierarchy(null); // when bug occurred a stack overflow happened here...
+ assertHierarchyEquals(
+ "Focus: X [in X.java [in hierarchy [in src [in P]]]]\n" +
+ "Super types:\n" +
+ "Sub types:\n",
+ hierarchy);
+ } finally {
+ deleteProject("P");
+ }
+}
+
+
}
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/WorkingCopyOwnerTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/WorkingCopyOwnerTests.java
index e7b13ad22..de90d1fdb 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/WorkingCopyOwnerTests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/WorkingCopyOwnerTests.java
@@ -42,7 +42,7 @@ public class WorkingCopyOwnerTests extends ModifyingResourceTests {
ICompilationUnit workingCopy = null;
- public class TestWorkingCopyOwner extends WorkingCopyOwner {
+ public static class TestWorkingCopyOwner extends WorkingCopyOwner {
public String toString() {
return "Test working copy owner";
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/WorkingCopyTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/WorkingCopyTests.java
index b28e9a2b8..60c719ac6 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/WorkingCopyTests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/WorkingCopyTests.java
@@ -32,7 +32,7 @@ public class WorkingCopyTests extends ModifyingResourceTests {
ICompilationUnit cu = null;
ICompilationUnit copy = null;
- public class TestWorkingCopyOwner extends WorkingCopyOwner {
+ public static class TestWorkingCopyOwner extends WorkingCopyOwner {
public IBuffer createBuffer(ICompilationUnit workingCopy) {
return new TestBuffer(workingCopy);
}
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/nd/BTreeTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/nd/BTreeTests.java
index 6b956550c..b0a76df86 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/nd/BTreeTests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/nd/BTreeTests.java
@@ -254,7 +254,7 @@ public class BTreeTests extends BaseTestCase {
}
}
- private class BTMockRecordComparator implements IBTreeComparator {
+ private static class BTMockRecordComparator implements IBTreeComparator {
public BTMockRecordComparator() {
}
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/rewrite/describing/ASTRewritingInstanceOfPatternExpressionTest.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/rewrite/describing/ASTRewritingInstanceOfPatternExpressionTest.java
index 6ab438867..0850607a0 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/rewrite/describing/ASTRewritingInstanceOfPatternExpressionTest.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/rewrite/describing/ASTRewritingInstanceOfPatternExpressionTest.java
@@ -35,16 +35,12 @@ import junit.framework.Test;
public class ASTRewritingInstanceOfPatternExpressionTest extends ASTRewritingTest {
- public ASTRewritingInstanceOfPatternExpressionTest(String name) {
- super(name, 16);
- }
-
public ASTRewritingInstanceOfPatternExpressionTest(String name, int apiLevel) {
super(name, apiLevel);
}
public static Test suite() {
- return createSuite(ASTRewritingInstanceOfPatternExpressionTest.class);
+ return createSuite(ASTRewritingInstanceOfPatternExpressionTest.class, 16);
}
@Override
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/rewrite/describing/ASTRewritingRecordDeclarationTest.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/rewrite/describing/ASTRewritingRecordDeclarationTest.java
index 0889cc806..e90a22da0 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/rewrite/describing/ASTRewritingRecordDeclarationTest.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/rewrite/describing/ASTRewritingRecordDeclarationTest.java
@@ -56,7 +56,7 @@ public class ASTRewritingRecordDeclarationTest extends ASTRewritingTest {
}
public static Test suite() {
- return createSuite(ASTRewritingRecordDeclarationTest.class);
+ return createSuite(ASTRewritingRecordDeclarationTest.class, 16);
}
@Override
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/rewrite/describing/ASTRewritingStatementsTest.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/rewrite/describing/ASTRewritingStatementsTest.java
index 870df6d02..b8e0c1017 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/rewrite/describing/ASTRewritingStatementsTest.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/rewrite/describing/ASTRewritingStatementsTest.java
@@ -5682,6 +5682,90 @@ public class ASTRewritingStatementsTest extends ASTRewritingTest {
deleteProject("P_17");
}
}
+ // https://bugs.eclipse.org/bugs/show_bug.cgi?id=571377
+ // add resources to existing try statement
+ public void testTryStatementWithResources8_since_9() throws Exception {
+ IJavaProject project = createProject("P_17", JavaCore.VERSION_1_7);
+ project.setOption(DefaultCodeFormatterConstants.FORMATTER_BRACE_POSITION_FOR_BLOCK, DefaultCodeFormatterConstants.NEXT_LINE);
+ IPackageFragmentRoot currentSourceFolder = getPackageFragmentRoot("P_17", "src");
+ try {
+ IPackageFragment pack1= currentSourceFolder.createPackageFragment("test1", false, null);
+ StringBuffer buf= new StringBuffer();
+ buf.append("package test1;\n");
+ buf.append("import java.io.FileInputStream;\n");
+ buf.append("import java.io.IOException;\n");
+ buf.append("public class E {\n");
+ buf.append(" public void foo(int i) {\n");
+ buf.append(" try {\n");
+ buf.append(" FileInputStream f = new FileInputStream(\"a.b\");\n");
+ buf.append(" } catch (IOException exe) {\n");
+ buf.append(" System.out.println(exe);\n");
+ buf.append(" }\n");
+ buf.append(" }\n");
+ buf.append("}\n");
+ ICompilationUnit cu= pack1.createCompilationUnit("E.java", buf.toString(), false, null);
+
+ CompilationUnit astRoot= createAST(cu);
+ AST ast= astRoot.getAST();
+ ASTRewrite rewrite= ASTRewrite.create(ast);
+
+ assertTrue("Parse errors", (astRoot.getFlags() & ASTNode.MALFORMED) == 0);
+ TypeDeclaration type= findTypeDeclaration(astRoot, "E");
+ MethodDeclaration methodDecl= findMethodDeclaration(type, "foo");
+ Block block= methodDecl.getBody();
+ List blockStatements= block.statements();
+ assertTrue("Number of statements not 1", blockStatements.size() == 1);
+ { // add new resource statements to make try-with-resources
+ TryStatement tryStatement= (TryStatement) blockStatements.get(0);
+ List resources= tryStatement.resources();
+ assertTrue("Number of resource statements not 0", resources.size() == 0);
+
+ VariableDeclarationFragment newVariableDeclarationFragment1= ast.newVariableDeclarationFragment();
+ newVariableDeclarationFragment1.setName(ast.newSimpleName("a"));
+ ClassInstanceCreation newClassInstanceCreation1= ast.newClassInstanceCreation();
+ newClassInstanceCreation1.setType(ast.newSimpleType(ast.newSimpleName("FileInputStream")));
+ StringLiteral newStringLiteral1= ast.newStringLiteral();
+ newStringLiteral1.setLiteralValue("c.d");
+ newClassInstanceCreation1.arguments().add(newStringLiteral1);
+ newVariableDeclarationFragment1.setInitializer(newClassInstanceCreation1);
+ VariableDeclarationExpression newVariableDeclarationExpression1= ast.newVariableDeclarationExpression(newVariableDeclarationFragment1);
+ newVariableDeclarationExpression1.setType(ast.newSimpleType(ast.newSimpleName("FileInputStream")));
+
+ VariableDeclarationFragment newVariableDeclarationFragment2= ast.newVariableDeclarationFragment();
+ newVariableDeclarationFragment2.setName(ast.newSimpleName("b"));
+ ClassInstanceCreation newClassInstanceCreation2= ast.newClassInstanceCreation();
+ newClassInstanceCreation2.setType(ast.newSimpleType(ast.newSimpleName("FileInputStream")));
+ StringLiteral newStringLiteral2= ast.newStringLiteral();
+ newStringLiteral2.setLiteralValue("e.f");
+ newClassInstanceCreation2.arguments().add(newStringLiteral2);
+ newVariableDeclarationFragment2.setInitializer(newClassInstanceCreation2);
+ VariableDeclarationExpression newVariableDeclarationExpression2= ast.newVariableDeclarationExpression(newVariableDeclarationFragment2);
+ newVariableDeclarationExpression2.setType(ast.newSimpleType(ast.newSimpleName("FileInputStream")));
+
+ rewrite.getListRewrite(tryStatement, TryStatement.RESOURCES2_PROPERTY).insertLast(newVariableDeclarationExpression1, null);
+ rewrite.getListRewrite(tryStatement, TryStatement.RESOURCES2_PROPERTY).insertLast(newVariableDeclarationExpression2, null);
+ }
+ String preview= evaluateRewrite(cu, rewrite);
+
+ buf= new StringBuffer();
+ buf.append("package test1;\n");
+ buf.append("import java.io.FileInputStream;\n");
+ buf.append("import java.io.IOException;\n");
+ buf.append("public class E {\n");
+ buf.append(" public void foo(int i) {\n");
+ buf.append(" try (FileInputStream a = new FileInputStream(\"c.d\");\n");
+ buf.append(" FileInputStream b = new FileInputStream(\"e.f\")) {\n");
+ buf.append(" FileInputStream f = new FileInputStream(\"a.b\");\n");
+ buf.append(" } catch (IOException exe) {\n");
+ buf.append(" System.out.println(exe);\n");
+ buf.append(" }\n");
+ buf.append(" }\n");
+ buf.append("}\n");
+ assertEqualString(preview, buf.toString());
+ } finally {
+ deleteProject("P_17");
+ }
+ }
/** @deprecated using deprecated code */
public void testTypeDeclarationStatement_only_2() throws Exception {
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/rewrite/describing/ASTRewritingSwitchExpressionsTest.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/rewrite/describing/ASTRewritingSwitchExpressionsTest.java
index f384b9234..2201dcf51 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/rewrite/describing/ASTRewritingSwitchExpressionsTest.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/rewrite/describing/ASTRewritingSwitchExpressionsTest.java
@@ -42,16 +42,12 @@ import junit.framework.Test;
public class ASTRewritingSwitchExpressionsTest extends ASTRewritingTest {
- public ASTRewritingSwitchExpressionsTest(String name) {
- super(name, 14);
- }
-
public ASTRewritingSwitchExpressionsTest(String name, int apiLevel) {
super(name, apiLevel);
}
public static Test suite() {
- return createSuite(ASTRewritingSwitchExpressionsTest.class);
+ return createSuite(ASTRewritingSwitchExpressionsTest.class, 14);
}
@Override
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/rewrite/describing/ASTRewritingTest.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/rewrite/describing/ASTRewritingTest.java
index ca8b5eea8..5e59aa63c 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/rewrite/describing/ASTRewritingTest.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/rewrite/describing/ASTRewritingTest.java
@@ -150,6 +150,7 @@ public class ASTRewritingTest extends AbstractJavaModelTests {
suite.addTest(ASTRewritingLambdaExpressionTest.suite());
suite.addTest(ASTRewritingReferenceExpressionTest.suite());
suite.addTest(ASTRewritingRecordDeclarationTest.suite());
+ suite.addTest(ASTRewritingInstanceOfPatternExpressionTest.suite());
suite.addTest(SourceModifierTest.suite());
suite.addTest(ImportRewriteTest.suite());
suite.addTest(ImportRewrite18Test.suite());

Back to the top