diff options
author | Stephan Herrmann | 2021-05-04 21:42:23 +0000 |
---|---|---|
committer | Stephan Herrmann | 2021-05-04 23:25:36 +0000 |
commit | 24e9db974f6280483b90a8444f24075c2cd08cc3 (patch) | |
tree | c05a7aaa2d8df591edcee1d7b3fdaadb60d28946 /org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt | |
parent | 45518326ca0c735356fc3f42ab0bcd89413b0a78 (diff) | |
download | org.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')
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()); |