blob: 54fbd1dcfd64e03c2f8525397205588813841bb8 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2020, 2021 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.jdt.core.tests.model;
import java.io.IOException;
import java.util.Map;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.jdt.core.ICompilationUnit;
import org.eclipse.jdt.core.IField;
import org.eclipse.jdt.core.IJavaElement;
import org.eclipse.jdt.core.IJavaProject;
import org.eclipse.jdt.core.IType;
import org.eclipse.jdt.core.JavaCore;
import org.eclipse.jdt.core.JavaModelException;
import org.eclipse.jdt.core.WorkingCopyOwner;
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.TypeReferenceMatch;
import org.eclipse.jdt.internal.core.LocalVariable;
import org.eclipse.jdt.internal.core.ResolvedSourceField;
import org.eclipse.jdt.internal.core.ResolvedSourceType;
import org.eclipse.jdt.internal.core.SourceField;
import org.eclipse.jdt.internal.core.SourceMethod;
import org.eclipse.jdt.internal.core.SourceType;
import junit.framework.Test;
// JavaSearchBugs14Tests deleted and all test cases moved to JavaSearchBugs15Tests
// since both record and instanceof variable are in 2nd preview in Java15
public class JavaSearchBugs15Tests extends AbstractJavaSearchTests {
static {
// org.eclipse.jdt.internal.core.search.BasicSearchEngine.VERBOSE = true;
// TESTS_NUMBERS = new int[] { 19 };
// TESTS_RANGE = new int[] { 1, -1 };
// TESTS_NAMES = new String[] {"testBug542559_001"};
}
public JavaSearchBugs15Tests(String name) {
super(name);
this.endChar = "";
}
public static Test suite() {
return buildModelTestSuite(JavaSearchBugs15Tests.class, BYTECODE_DECLARATION_ORDER);
}
class TestCollector extends JavaSearchResultCollector {
public void acceptSearchMatch(SearchMatch searchMatch) throws CoreException {
super.acceptSearchMatch(searchMatch);
}
}
class ReferenceCollector extends JavaSearchResultCollector {
protected void writeLine() throws CoreException {
super.writeLine();
ReferenceMatch refMatch = (ReferenceMatch) this.match;
IJavaElement localElement = refMatch.getLocalElement();
if (localElement != null) {
this.line.append("+[");
if (localElement.getElementType() == IJavaElement.ANNOTATION) {
this.line.append('@');
this.line.append(localElement.getElementName());
this.line.append(" on ");
this.line.append(localElement.getParent().getElementName());
} else {
this.line.append(localElement.getElementName());
}
this.line.append(']');
}
}
}
class TypeReferenceCollector extends ReferenceCollector {
protected void writeLine() throws CoreException {
super.writeLine();
TypeReferenceMatch typeRefMatch = (TypeReferenceMatch) this.match;
IJavaElement[] others = typeRefMatch.getOtherElements();
int length = others==null ? 0 : others.length;
if (length > 0) {
this.line.append("+[");
for (int i=0; i<length; i++) {
IJavaElement other = others[i];
if (i>0) this.line.append(',');
if (other.getElementType() == IJavaElement.ANNOTATION) {
this.line.append('@');
this.line.append(other.getElementName());
this.line.append(" on ");
this.line.append(other.getParent().getElementName());
} else {
this.line.append(other.getElementName());
}
}
this.line.append(']');
}
}
}
protected IJavaProject setUpJavaProject(final String projectName, String compliance, boolean useFullJCL) throws CoreException, IOException {
// copy files in project from source workspace to target workspace
IJavaProject setUpJavaProject = super.setUpJavaProject(projectName, compliance, useFullJCL);
setUpJavaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, JavaCore.ENABLED);
return setUpJavaProject;
}
IJavaSearchScope getJavaSearchScope() {
return SearchEngine.createJavaSearchScope(new IJavaProject[] {getJavaProject("JavaSearchBugs")});
}
IJavaSearchScope getJavaSearchScopeBugs(String packageName, boolean addSubpackages) throws JavaModelException {
if (packageName == null) return getJavaSearchScope();
return getJavaSearchPackageScope("JavaSearchBugs", packageName, addSubpackages);
}
public ICompilationUnit getWorkingCopy(String path, String source) throws JavaModelException {
if (this.wcOwner == null) {
this.wcOwner = new WorkingCopyOwner() {};
}
return getWorkingCopy(path, source, this.wcOwner);
}
@Override
public void setUpSuite() throws Exception {
super.setUpSuite();
JAVA_PROJECT = setUpJavaProject("JavaSearchBugs", "16");
}
public void tearDownSuite() throws Exception {
deleteProject("JavaSearchBugs");
super.tearDownSuite();
}
protected void setUp () throws Exception {
super.setUp();
this.resultCollector = new TestCollector();
this.resultCollector.showAccuracy(true);
}
// 0 reference of the component in compact constructor
public void testBug558812_001() throws CoreException {
this.workingCopies = new ICompilationUnit[1];
this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/X.java",
"public record Point(int comp_) { \n" +
" public Point {\n" +
" }\n" +
"}\n"
);
IJavaProject javaProject = this.workingCopies[0].getJavaProject(); //assuming single project for all working copies
String old = javaProject.getOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, true);
try {
javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, JavaCore.ENABLED);
search("comp_", FIELD, REFERENCES);
assertSearchResults("");
} finally {
javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, old);
}
}
//1 reference of the component in compact constructor
public void testBug558812_002() throws CoreException {
this.workingCopies = new ICompilationUnit[1];
this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/X.java",
"public record Point(int comp_) { \n" +
" public Point {\n" +
" comp_=11;\n" +
" }\n" +
"}\n"
);
IJavaProject javaProject = this.workingCopies[0].getJavaProject(); //assuming single project for all working copies
String old = javaProject.getOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, true);
try {
javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, JavaCore.ENABLED);
search("comp_", FIELD, REFERENCES);
assertSearchResults("src/X.java Point(int) [comp_] EXACT_MATCH");
} finally {
javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, old);
}
}
//2 reference of the component in compact constructor
public void testBug558812_003() throws CoreException {
this.workingCopies = new ICompilationUnit[1];
this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/X.java",
"public record Point(int comp_) { \n" +
" public Point {\n" +
" comp_=11;\n" +
" this.comp_=11;\n" +
" }\n" +
"}\n"
);
IJavaProject javaProject = this.workingCopies[0].getJavaProject(); //assuming single project for all working copies
String old = javaProject.getOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, true);
try {
javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, JavaCore.ENABLED);
search("comp_", FIELD, REFERENCES);
assertSearchResults("src/X.java Point(int) [comp_] EXACT_MATCH\n" +
"src/X.java Point(int) [comp_] EXACT_MATCH");
} finally {
javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, old);
}
}
//3 reference of the component in compact constructor
public void testBug558812_004() throws CoreException {
this.workingCopies = new ICompilationUnit[1];
this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/X.java",
"public record Point(int comp_) { \n" +
" public Point {\n" +
" comp_=11;\n" +
" this.comp_=comp_;\n" +
" }\n" +
"}\n"
);
IJavaProject javaProject = this.workingCopies[0].getJavaProject(); //assuming single project for all working copies
String old = javaProject.getOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, true);
try {
javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, JavaCore.ENABLED);
search("comp_", FIELD, REFERENCES);
assertSearchResults("src/X.java Point(int) [comp_] EXACT_MATCH\n" +
"src/X.java Point(int) [comp_] EXACT_MATCH\n" +
"src/X.java Point(int) [comp_] EXACT_MATCH");
} finally {
javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, old);
}
}
//0 reference of the component in canonical constructor
public void testBug558812_005() throws CoreException {
this.workingCopies = new ICompilationUnit[1];
this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/X.java",
"public record Point(int comp_) { \n" +
" public Point (int a) {\n" +
" }\n" +
"}\n"
);
IJavaProject javaProject = this.workingCopies[0].getJavaProject(); //assuming single project for all working copies
String old = javaProject.getOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, true);
try {
javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, JavaCore.ENABLED);
search("comp_", FIELD, REFERENCES);
assertSearchResults("");
} finally {
javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, old);
}
}
//1 reference of the component in canonical constructor
public void testBug558812_006() throws CoreException {
this.workingCopies = new ICompilationUnit[1];
this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/X.java",
"public record Point(int comp_) { \n" +
" public Point (int a) {\n" +
" comp_=11;\n" +
" }\n" +
"}\n"
);
IJavaProject javaProject = this.workingCopies[0].getJavaProject(); //assuming single project for all working copies
String old = javaProject.getOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, true);
try {
javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, JavaCore.ENABLED);
search("comp_", FIELD, REFERENCES);
assertSearchResults("src/X.java Point(int) [comp_] EXACT_MATCH");
} finally {
javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, old);
}
}
//1 reference of the component in canonical constructor - part2
public void testBug558812_007() throws CoreException {
this.workingCopies = new ICompilationUnit[1];
this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/X.java",
"public record Point(int comp_) { \n" +
" public Point (int a) {\n" +
" // comp_=11;\n" +
" this.comp_=a;\n" +
" }\n" +
"}\n"
);
IJavaProject javaProject = this.workingCopies[0].getJavaProject(); //assuming single project for all working copies
String old = javaProject.getOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, true);
try {
javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, JavaCore.ENABLED);
search("comp_", FIELD, REFERENCES);
assertSearchResults("src/X.java Point(int) [comp_] EXACT_MATCH");
} finally {
javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, old);
}
}
//1 reference of the component in compact constructor - clashing method parameter
public void testBug558812_008() throws CoreException {
this.workingCopies = new ICompilationUnit[1];
this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/X.java",
"public record Point(int comp_) { \n" +
" public Point {\n" +
" comp_=11;\n" +
" }\n" +
"public void method ( int comp_) { \n"+
"} \n"+
"}\n"
);
IJavaProject javaProject = this.workingCopies[0].getJavaProject(); //assuming single project for all working copies
String old = javaProject.getOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, true);
try {
javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, JavaCore.ENABLED);
search("comp_", FIELD, REFERENCES);
assertSearchResults("src/X.java Point(int) [comp_] EXACT_MATCH");
} finally {
javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, old);
}
}
//1 reference of the component in compact constructor - clashing method's local variable
public void testBug558812_009() throws CoreException {
this.workingCopies = new ICompilationUnit[1];
this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/X.java",
"public record Point(int comp_) { \n" +
" public Point {\n" +
" comp_=11;\n" +
" }\n" +
"public void method ( ) { \n"+
" int comp_=11;\n" +
"} \n"+
"}\n"
);
IJavaProject javaProject = this.workingCopies[0].getJavaProject(); //assuming single project for all working copies
String old = javaProject.getOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, true);
try {
javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, JavaCore.ENABLED);
search("comp_", FIELD, REFERENCES);
assertSearchResults("src/X.java Point(int) [comp_] EXACT_MATCH");
} finally {
javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, old);
}
}
// more test case
// test case of comp_ selection in compact constructor
// selection - select record type
public void testBug558812_010() throws CoreException {
this.workingCopies = new ICompilationUnit[1];
this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/X.java",
"public record /* here*/Point(int comp_) { \n" +
" public Point {\n" +
" comp_=11;\n" +
" }\n" +
"public void method ( ) { \n"+
" int compp_=11;\n" +
"} \n"+
"}\n"
);
String str = this.workingCopies[0].getSource();
String selection = "/* here*/Point";
int start = str.indexOf(selection);
int length = selection.length();
IJavaElement[] elements = this.workingCopies[0].codeSelect(start, length);
assertTrue(elements.length ==1);
//TODO: check if record
}
//selection - select local field in a method in record
public void testBug558812_011() throws CoreException {
this.workingCopies = new ICompilationUnit[1];
this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/X.java",
"public record /* here*/Point(int comp_) { \n" +
" public Point {\n" +
" comp_=11;\n" +
" }\n" +
"public void method ( ) { \n"+
" int /* here*/compp_=11;\n" +
"} \n"+
"}\n"
);
String str = this.workingCopies[0].getSource();
String selection = "/* here*/compp_";
int start = str.indexOf(selection);
int length = selection.length();
IJavaElement[] elements = this.workingCopies[0].codeSelect(start, length);
assertTrue(elements.length ==1);
assertTrue(elements[0] instanceof LocalVariable);
}
//selection - select local field in a compact constructor in record
public void testBug558812_012() throws CoreException {
this.workingCopies = new ICompilationUnit[1];
this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/X.java",
"public record /* here*/Point(int comp_) { \n" +
" public Point {\n" +
" /* here*/comp_=11;\n" +
" }\n" +
"public void method ( ) { \n"+
" int compp_=11;\n" +
"} \n"+
"}\n"
);
String str = this.workingCopies[0].getSource();
String selection = "/* here*/comp_";
int start = str.indexOf(selection);
int length = selection.length();
IJavaElement[] elements = this.workingCopies[0].codeSelect(start, length);
assertTrue(elements.length ==1);
assertTrue(elements[0] instanceof LocalVariable);
}
//selection - select local field in a compact constructor in record
public void testBug558812_013() throws CoreException {
this.workingCopies = new ICompilationUnit[1];
this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/X.java",
"public record /* here*/Point(int comp_) { \n" +
" public Point {\n" +
" /* here*/this.comp_=11;\n" +
" }\n" +
"public void method ( ) { \n"+
" int compp_=11;\n" +
"} \n"+
"}\n"
);
String str = this.workingCopies[0].getSource();
String selection = "/* here*/this.comp_";
int start = str.indexOf(selection);
int length = selection.length();
IJavaElement[] elements = this.workingCopies[0].codeSelect(start, length);
assertTrue(elements.length ==1);
assertTrue(elements[0] instanceof ResolvedSourceField);
}
//selection - select field in a method in record ( using this)
public void testBug558812_014() throws CoreException {
this.workingCopies = new ICompilationUnit[1];
this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/X.java",
"public record /* here*/Point(int comp_) { \n" +
" public Point {\n" +
" /* here*/comp_=11;\n" +
" }\n" +
"public void method ( ) { \n"+
" int compp_=/* here*/this.comp_;\n" +
"} \n"+
"}\n"
);
String str = this.workingCopies[0].getSource();
String selection = "/* here*/this.comp_";
int start = str.indexOf(selection);
int length = selection.length();
IJavaElement[] elements = this.workingCopies[0].codeSelect(start, length);
assertTrue(elements.length ==1);
assertTrue(elements[0] instanceof ResolvedSourceField);
}
//selection - select field in a method in record ( without this)
public void testBug558812_015() throws CoreException {
this.workingCopies = new ICompilationUnit[1];
this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/X.java",
"public record /* here*/Point(int comp_) { \n" +
" public Point {\n" +
" comp_=11;\n" +
" }\n" +
"public void method ( ) { \n"+
" int compp_=/* here2*/comp_;\n" +
"} \n"+
"}\n"
);
String str = this.workingCopies[0].getSource();
String selection = "/* here2*/comp_";
int start = str.indexOf(selection);
int length = selection.length();
IJavaElement[] elements = this.workingCopies[0].codeSelect(start, length);
assertTrue(elements.length ==1);
assertTrue(elements[0] instanceof ResolvedSourceField);
ResolvedSourceField sm = (ResolvedSourceField)elements[0];
IJavaElement parent = sm.getParent();
SourceType st = (SourceType)parent;
assertTrue(st.isRecord());
}
public void testBug558812_016() throws CoreException {
this.workingCopies = new ICompilationUnit[1];
this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/X.java",
"public record Point(int comp_) { \n" +
" public Point {\n" +
" /*here2*/comp_=11;\n" +
" }\n" +
"public void method ( ) { \n"+
" int compp_=comp_;\n" +
" int compp2_=comp_;\n" +
"} \n"+
"}\n"
);
String str = this.workingCopies[0].getSource();
String selection = "/*here2*/comp_";
int start = str.indexOf(selection);
int length = selection.length();
IJavaElement[] elements = this.workingCopies[0].codeSelect(start, length);
assertTrue(elements.length ==1);
assertTrue(elements[0] instanceof LocalVariable);
search(elements[0], REFERENCES, EXACT_RULE);
assertSearchResults(
"src/X.java Point(int) [comp_] EXACT_MATCH\n" +
"src/X.java void Point.method() [comp_] EXACT_MATCH\n" +
"src/X.java void Point.method() [comp_] EXACT_MATCH");
}
public void testBug558812_016a() throws CoreException {
this.workingCopies = new ICompilationUnit[1];
this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/X.java",
"public record Point(int comp_) { \n" +
" public Point {\n" +
" comp_=11;\n" +
" }\n" +
"public void method ( ) { \n"+
" int compp_=comp_;\n" +
" int compp2_=comp_;\n" +
"} \n"+
"}\n"
);
String str = this.workingCopies[0].getSource();
String selection = "comp_";
int start = str.lastIndexOf(selection);
int length = selection.length();
IJavaElement[] elements = this.workingCopies[0].codeSelect(start, length);
assertTrue(elements.length ==1);
assertTrue(elements[0] instanceof IField);
search(elements[0], REFERENCES, EXACT_RULE);
assertSearchResults(
"src/X.java Point(int) [comp_] EXACT_MATCH\n" +
"src/X.java void Point.method() [comp_] EXACT_MATCH\n" +
"src/X.java void Point.method() [comp_] EXACT_MATCH");
}
public void testBug558812_017() throws CoreException {
this.workingCopies = new ICompilationUnit[1];
this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/X.java",
"public record Point(int comp_) { \n" +
" public Point {\n" +
" /*here2*/comp_=11;\n" +
" }\n" +
"public void method ( ) { \n"+
" int compp_=comp_;\n" +
" int compp2_=comp_;\n" +
" int compp3_=this.comp_;\n" +
"} \n"+
"}\n"
);
String str = this.workingCopies[0].getSource();
String selection = "/*here2*/comp_";
int start = str.indexOf(selection);
int length = selection.length();
IJavaElement[] elements = this.workingCopies[0].codeSelect(start, length);
assertTrue(elements.length ==1);
assertTrue(elements[0] instanceof LocalVariable);
search(elements[0], REFERENCES, EXACT_RULE);
assertSearchResults(
"src/X.java Point(int) [comp_] EXACT_MATCH\n" +
"src/X.java void Point.method() [comp_] EXACT_MATCH\n" +
"src/X.java void Point.method() [comp_] EXACT_MATCH\n" +
"src/X.java void Point.method() [comp_] EXACT_MATCH");
}
public void testBug558812_017a() throws CoreException {
this.workingCopies = new ICompilationUnit[1];
this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/X.java",
"public record Point(int comp_) { \n" +
" public Point {\n" +
" comp_=11;\n" +
" }\n" +
"public void method ( ) { \n"+
" int compp_=comp_;\n" +
" int compp2_=comp_;\n" +
" int compp3_=this.comp_;\n" +
"} \n"+
"}\n"
);
String str = this.workingCopies[0].getSource();
String selection = "comp_";
int start = str.lastIndexOf(selection);
int length = selection.length();
IJavaElement[] elements = this.workingCopies[0].codeSelect(start, length);
assertTrue(elements.length ==1);
assertTrue(elements[0] instanceof IField);
search(elements[0], REFERENCES, EXACT_RULE);
assertSearchResults(
"src/X.java Point(int) [comp_] EXACT_MATCH\n" +
"src/X.java void Point.method() [comp_] EXACT_MATCH\n" +
"src/X.java void Point.method() [comp_] EXACT_MATCH\n" +
"src/X.java void Point.method() [comp_] EXACT_MATCH");
}
//
public void testBug572467() throws CoreException {
this.workingCopies = new ICompilationUnit[1];
this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/Point.java",
"public record Point(int comp_) { \n" +
" public Point {\n" +
" comp_=11;\n" +
" }\n" +
"public void method ( ) { \n"+
" int var1=comp_;\n" +
" int var2=comp_;\n" +
" int var3=this.comp_;\n" +
" int accMethod=this.comp_();\n" +
"} \n"+
"}\n"
);
String str = this.workingCopies[0].getSource();
String selection = "comp_";
int start = str.lastIndexOf(selection);
int length = selection.length();
IJavaElement[] elements = this.workingCopies[0].codeSelect(start, length);
assertTrue(elements.length ==1);
assertTrue(elements[0] instanceof IField);
search(elements[0], REFERENCES, EXACT_RULE);
assertSearchResults(
"src/Point.java Point(int) [comp_] EXACT_MATCH\n" +
"src/Point.java void Point.method() [comp_] EXACT_MATCH\n" +
"src/Point.java void Point.method() [comp_] EXACT_MATCH\n" +
"src/Point.java void Point.method() [comp_] EXACT_MATCH\n" +
"src/Point.java void Point.method() [comp_()] EXACT_MATCH");
}
//selection - select CC type
public void testBug558812_018() throws CoreException {
this.workingCopies = new ICompilationUnit[1];
this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/X.java",
"public record Point(int comp_) { \n" +
" public /* here*/Point {\n" +
" comp_=11;\n" +
" }\n" +
" public Point (int a, int b){\n" +
" comp_=11;\n" +
" }\n" +
"public void method ( ) { \n"+
" int compp_=11;\n" +
"} \n"+
"}\n"
);
String str = this.workingCopies[0].getSource();
String selection = "/* here*/Point";
int start = str.indexOf(selection);
int length = selection.length();
IJavaElement[] elements = this.workingCopies[0].codeSelect(start, length);
assertTrue(elements.length ==1);
assertTrue(elements[0] instanceof SourceMethod);
SourceMethod sm = (SourceMethod)elements[0];
IJavaElement parent = sm.getParent();
SourceType st = (SourceType)parent;
assertTrue(st.isRecord());
}
//selection - select CC type and search
public void testBug558812_019() throws CoreException {
this.workingCopies = new ICompilationUnit[1];
this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/X.java",
"public record Point(int comp_) { \n" +
" public /* here*/Point {\n" +
" comp_=11;\n" +
" }\n" +
" public Point (int a, int b){\n" +
" comp_=11;\n" +
" }\n" +
"public void method ( ) { \n"+
" int compp_=11;\n" +
" Point p = new Point(1) ;\n" +
"} \n"+
"}\n"
);
String str = this.workingCopies[0].getSource();
String selection = "/* here*/Point";
int start = str.indexOf(selection);
int length = selection.length();
IJavaElement[] elements = this.workingCopies[0].codeSelect(start, length);
assertTrue(elements.length ==1);
assertTrue(elements[0] instanceof SourceMethod);
search(elements[0], REFERENCES, EXACT_RULE);
assertSearchResults(
"src/X.java void Point.method() [new Point(1)] EXACT_MATCH");
}
//selection - select non-CC type and search
public void testBug558812_020() throws CoreException {
this.workingCopies = new ICompilationUnit[1];
this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/X.java",
"public record Point(int comp_) { \n" +
" public Point {\n" +
" comp_=11;\n" +
" }\n" +
" public /* here*/Point (int a, int b){\n" +
" comp_=11;\n" +
" }\n" +
"public void method ( ) { \n"+
" int compp_=11;\n" +
" Point p = new Point(1) ;\n" +
"} \n"+
"}\n"
);
String str = this.workingCopies[0].getSource();
String selection = "/* here*/Point";
int start = str.indexOf(selection);
int length = selection.length();
IJavaElement[] elements = this.workingCopies[0].codeSelect(start, length);
assertTrue(elements.length ==1);
assertTrue(elements[0] instanceof SourceMethod);
search(elements[0], REFERENCES, EXACT_RULE);
assertSearchResults("");
}
//selection - select non-CC type and search- 2
public void testBug558812_021() throws CoreException {
this.workingCopies = new ICompilationUnit[1];
this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/X.java",
"public record Point(int comp_) { \n" +
" public Point {\n" +
" comp_=11;\n" +
" }\n" +
" public /* here*/Point (int a, int b){\n" +
" comp_=11;\n" +
" }\n" +
"public void method ( ) { \n"+
" int compp_=11;\n" +
" Point p = new Point(1) ;\n" +
" Point p = new Point(1,2) ;\n" +
"} \n"+
"}\n"
);
String str = this.workingCopies[0].getSource();
String selection = "/* here*/Point";
int start = str.indexOf(selection);
int length = selection.length();
IJavaElement[] elements = this.workingCopies[0].codeSelect(start, length);
assertTrue(elements.length ==1);
assertTrue(elements[0] instanceof SourceMethod);
search(elements[0], REFERENCES, EXACT_RULE);
assertSearchResults(
"src/X.java void Point.method() [new Point(1,2)] EXACT_MATCH");
}
//selection - select CC type and search- 2
public void testBug558812_022() throws CoreException {
this.workingCopies = new ICompilationUnit[1];
this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/X.java",
"public record Point(int comp_) { \n" +
" public /* here*/Point {\n" +
" comp_=11;\n" +
" }\n" +
" public Point (int a, int b){\n" +
" comp_=11;\n" +
" }\n" +
"public void method ( ) { \n"+
" int compp_=11;\n" +
" Point p = new Point(1) ;\n" +
" Point p = new Point(1,2) ;\n" +
"} \n"+
"}\n"
);
String str = this.workingCopies[0].getSource();
String selection = "/* here*/Point";
int start = str.indexOf(selection);
int length = selection.length();
IJavaElement[] elements = this.workingCopies[0].codeSelect(start, length);
assertTrue(elements.length ==1);
assertTrue(elements[0] instanceof SourceMethod);
search(elements[0], REFERENCES, EXACT_RULE);
assertSearchResults(
"src/X.java void Point.method() [new Point(1)] EXACT_MATCH");
}
//selection - select local field in a compact constructor in record and search1
public void testBug558812_23() throws CoreException {
this.workingCopies = new ICompilationUnit[1];
this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/X.java",
"public record /* here*/Point(int comp_) { \n" +
" public Point {\n" +
" /* here*/comp_=11;\n" +
" }\n" +
"public void method ( ) { \n"+
" int compp_=11;\n" +
"} \n"+
"}\n"
);
String str = this.workingCopies[0].getSource();
String selection = "/* here*/comp_";
int start = str.indexOf(selection);
int length = selection.length();
IJavaElement[] elements = this.workingCopies[0].codeSelect(start, length);
assertTrue(elements.length ==1);
assertTrue(elements[0] instanceof LocalVariable);
search(elements[0], REFERENCES, EXACT_RULE);
assertSearchResults(
"src/X.java Point(int) [comp_] EXACT_MATCH");
}
//selection - select local field in a compact constructor in record and search2
public void testBug558812_24() throws CoreException {
this.workingCopies = new ICompilationUnit[1];
this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/X.java",
"public record /* here*/Point(int comp_) { \n" +
" public Point {\n" +
" /* here*/comp_=11;\n" +
" }\n" +
"public void method ( ) { \n"+
" comp_=11;\n" +
"} \n"+
"}\n"
);
String str = this.workingCopies[0].getSource();
String selection = "/* here*/comp_";
int start = str.indexOf(selection);
int length = selection.length();
IJavaElement[] elements = this.workingCopies[0].codeSelect(start, length);
assertTrue(elements.length ==1);
assertTrue(elements[0] instanceof LocalVariable);
search(elements[0], REFERENCES, EXACT_RULE);
assertSearchResults(
"src/X.java Point(int) [comp_] EXACT_MATCH\n" +
"src/X.java void Point.method() [comp_] EXACT_MATCH");
}
//selection - select local field in a compact constructor in record and search3
public void testBug558812_25() throws CoreException {
this.workingCopies = new ICompilationUnit[1];
this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/X.java",
"public record /* here*/Point(int comp_) { \n" +
" public Point {\n" +
" /* here*/comp_=11;\n" +
" }\n" +
"public void method ( ) { \n"+
" comp_=11;\n" +
" int a=this.comp_;\n" +
"} \n"+
"}\n"
);
String str = this.workingCopies[0].getSource();
String selection = "/* here*/comp_";
int start = str.indexOf(selection);
int length = selection.length();
IJavaElement[] elements = this.workingCopies[0].codeSelect(start, length);
assertTrue(elements.length ==1);
assertTrue(elements[0] instanceof LocalVariable);
search(elements[0], REFERENCES, EXACT_RULE);
assertSearchResults(
"src/X.java Point(int) [comp_] EXACT_MATCH\n" +
"src/X.java void Point.method() [comp_] EXACT_MATCH\n"+
"src/X.java void Point.method() [comp_] EXACT_MATCH");
}
//selection - select record in another file
public void testBug558812_26() throws CoreException {
IJavaProject project1 = createJavaProject("JavaSearchBugs15", new String[] {"src"}, new String[] {"JCL14_LIB"}, "bin", "14");
try {
Map<String, String> options = project1.getOptions(false);
options.put(JavaCore.COMPILER_COMPLIANCE, JavaCore.VERSION_16);
options.put(JavaCore.COMPILER_SOURCE, JavaCore.VERSION_16);
project1.setOptions(options);
project1.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, JavaCore.ENABLED);
project1.open(null);
createFolder("/JavaSearchBugs15/src/pack11");
String fileContent = "package pack11;\n" +
"public record X11() {\n" +
"}\n";
String fileContent2 = "package pack11;\n" +
"public class X12 {\n" +
"/*here*/X11 p =null;\n"+
"}\n";
createFile("/JavaSearchBugs15/src/pack11/X11.java", fileContent);
createFile("/JavaSearchBugs15/src/pack11/X12.java",fileContent2);
ICompilationUnit unit = getCompilationUnit("/JavaSearchBugs15/src/pack11/X12.java");
String x11 = "/*here*/X11";
int start = fileContent2.indexOf(x11);
IJavaElement[] elements = unit.codeSelect(start, x11.length());
assertTrue(elements.length ==1);
assertTrue(elements[0] instanceof ResolvedSourceType);
boolean record = ((ResolvedSourceType)elements[0]).isRecord();
assertTrue(record);
} finally {
deleteProject(project1);
}
}
//selection - select parameter in normal constructor matching component name
public void testBug558812_27() throws CoreException {
this.workingCopies = new ICompilationUnit[1];
this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/X.java",
"public record X(int a) {\n" +
"public X { \n"+
" this.a = a; \n"+
" }\n"+
"public X(int/*here*/a, int b) { // select the a here\n"+
"this.a = a;\n"+
"}\n"+
"}\n"
);
String str = this.workingCopies[0].getSource();
String selection = "/*here*/a";
int start = str.indexOf(selection);
int length = selection.length();
IJavaElement[] elements = this.workingCopies[0].codeSelect(start, length);
assertTrue(elements.length ==1);
assertTrue(elements[0] instanceof LocalVariable);
search(elements[0], REFERENCES, EXACT_RULE);
assertSearchResults(
"src/X.java X(int, int) [a] EXACT_MATCH");
}
public void testBug560486_028() throws CoreException {
this.workingCopies = new ICompilationUnit[1];
this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/X.java",
"public record Point(int comp) { \n" +
"public void method ( ) { \n"+
"/*here*/comp(); \n"+
"} \n"+
"}\n"
);
String str = this.workingCopies[0].getSource();
String selection = "/*here*/comp";
int start = str.indexOf(selection);
int length = selection.length();
IJavaElement[] elements = this.workingCopies[0].codeSelect(start, length);
assertTrue(elements.length ==1);
assertTrue(!(elements[0] instanceof SourceType));
assertTrue((elements[0] instanceof SourceField));
}
//Bug 561048 code selection
public void testBug561048_029() throws CoreException {
this.workingCopies = new ICompilationUnit[1];
this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/X.java",
"public class cl {\n"+
"public cl() {\n"+
" method1();\n"+
"}\n"+
"private void method1() {\n"+
" String y= this.toString();\n"+
" if (y instanceof String /*here*/yz) {\n"+
" System.out.println(yz.toLowerCase());\n"+
" System.out.println(yz.charAt(0));\n"+
" }\n"+
"}\n"+
"}\n"
);
String str = this.workingCopies[0].getSource();
String selection = "/*here*/yz";
int start = str.indexOf(selection);
int length = selection.length();
IJavaElement[] elements = this.workingCopies[0].codeSelect(start, length);
assertTrue(elements.length ==1);
assertTrue((elements[0] instanceof LocalVariable));
}
public void testBug561048_030() throws CoreException {
this.workingCopies = new ICompilationUnit[1];
this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/X.java",
"public class cl {\n"+
"public cl() {\n"+
" method1();\n"+
"}\n"+
"private void method1() {\n"+
" String y= this.toString();\n"+
" if (y instanceof String /*here*/yz) {\n"+
" System.out.println(yz.toLowerCase());\n"+
" }\n"+
"}\n"+
"}\n"
);
String str = this.workingCopies[0].getSource();
String selection = "/*here*/yz";
int start = str.indexOf(selection);
int length = selection.length();
IJavaElement[] elements = this.workingCopies[0].codeSelect(start, length);
assertTrue(elements.length ==1);
assertTrue((elements[0] instanceof LocalVariable));
search(elements[0], REFERENCES, EXACT_RULE);
assertSearchResults(
"src/X.java void cl.method1() [yz] EXACT_MATCH");
}
public void testBug561048_031() throws CoreException {
this.workingCopies = new ICompilationUnit[1];
this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/X.java",
"public class cl {\n"+
"public cl() {\n"+
" method1();\n"+
"}\n"+
"private void method1() {\n"+
" String y= this.toString();\n"+
" if (y instanceof String /*here*/yz) {\n"+
" System.out.println(yz.toLowerCase());\n"+
" System.out.println(yz.charAt(0));\n"+
" }\n"+
"}\n"+
"}\n"
);
String str = this.workingCopies[0].getSource();
String selection = "/*here*/yz";
int start = str.indexOf(selection);
int length = selection.length();
IJavaElement[] elements = this.workingCopies[0].codeSelect(start, length);
assertTrue(elements.length ==1);
assertTrue((elements[0] instanceof LocalVariable));
search(elements[0], REFERENCES, EXACT_RULE);
assertSearchResults(
"src/X.java void cl.method1() [yz] EXACT_MATCH\n" +
"src/X.java void cl.method1() [yz] EXACT_MATCH");
}
public void testBug561132_033() throws CoreException {
this.workingCopies = new ICompilationUnit[1];
this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/X.java",
"public class cl {\n"+
"public cl() {\n"+
" method1();\n"+
"}\n"+
"private void method1() {\n"+
" String y= this.toString();\n"+
" if (y instanceof String yz) {\n"+
" System.out.println(/*here*/yz.toLowerCase());\n"+
" }\n"+
"}\n"+
"}\n"
);
String str = this.workingCopies[0].getSource();
String selection = "/*here*/yz";
int start = str.indexOf(selection);
int length = selection.length();
IJavaElement[] elements = this.workingCopies[0].codeSelect(start, length);
assertTrue(elements.length ==1);
assertTrue((elements[0] instanceof LocalVariable));
}
// mix Instance of pattern variable and record
public void testBug561048_032() throws CoreException {
this.workingCopies = new ICompilationUnit[1];
this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/X.java",
"public record cl() {\n"+
"public cl{\n"+
" method1();\n"+
"}\n"+
"private void method1() {\n"+
" String y= this.toString();\n"+
" if (y instanceof String /*here*/yz) {\n"+
" System.out.println(yz.toLowerCase());\n"+
" System.out.println(yz.charAt(0));\n"+
" }\n"+
"}\n"+
"}\n"
);
String str = this.workingCopies[0].getSource();
String selection = "/*here*/yz";
int start = str.indexOf(selection);
int length = selection.length();
IJavaElement[] elements = this.workingCopies[0].codeSelect(start, length);
assertTrue(elements.length ==1);
assertTrue((elements[0] instanceof LocalVariable));
search(elements[0], REFERENCES, EXACT_RULE);
assertSearchResults(
"src/X.java void cl.method1() [yz] EXACT_MATCH\n" +
"src/X.java void cl.method1() [yz] EXACT_MATCH");
}
//check for permit reference
public void test564049_001() throws CoreException {
this.workingCopies = new ICompilationUnit[1];
this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/X.java",
"public sealed class X permits Y{ \n" +
" }\n" +
" final class Y extends X {}\n"
);
IJavaProject javaProject = this.workingCopies[0].getJavaProject(); //assuming single project for all working copies
String old = javaProject.getOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, true);
try {
javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, JavaCore.ENABLED);
search("Y", CLASS, REFERENCES);
assertSearchResults("src/X.java X [Y] EXACT_MATCH");
} finally {
javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, old);
}
}
// select a class and check its permit reference
public void test564049_002() throws CoreException {
this.workingCopies = new ICompilationUnit[1];
this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/X.java",
"public sealed class X permits Y{ \n" +
" }\n" +
" final class /*here*/Y extends X {}\n"
);
String str = this.workingCopies[0].getSource();
String selection = "/*here*/Y";
int start = str.indexOf(selection);
int length = selection.length();
IJavaElement[] elements = this.workingCopies[0].codeSelect(start, length);
assertTrue(elements.length ==1);
assertTrue((elements[0] instanceof SourceType));
search(elements[0], REFERENCES, EXACT_RULE);
assertSearchResults(
"src/X.java X [Y] EXACT_MATCH");
}
// select a class ( at permit location) and check its reference
public void test564049_003() throws CoreException {
this.workingCopies = new ICompilationUnit[1];
this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/X.java",
"public sealed class X permits /*here*/Y{ \n" +
" }\n" +
" final class Y extends X {}\n"
);
String str = this.workingCopies[0].getSource();
String selection = "/*here*/Y";
int start = str.indexOf(selection);
int length = selection.length();
IJavaElement[] elements = this.workingCopies[0].codeSelect(start, length);
assertTrue(elements.length ==1);
assertTrue((elements[0] instanceof SourceType));
search(elements[0], REFERENCES, EXACT_RULE);
assertSearchResults(
"src/X.java X [Y] EXACT_MATCH");
}
//check for permit reference if it is the nth permitted item
public void test564049_004() throws CoreException {
this.workingCopies = new ICompilationUnit[1];
this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/X.java",
"public sealed class X permits Y,Q{ \n" +
" }\n" +
" final class Q extends X {}\n" +
" final class Y extends X {}\n"
);
IJavaProject javaProject = this.workingCopies[0].getJavaProject(); //assuming single project for all working copies
String old = javaProject.getOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, true);
try {
javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, JavaCore.ENABLED);
search("Q", CLASS, REFERENCES);
assertSearchResults("src/X.java X [Q] EXACT_MATCH");
} finally {
javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, old);
}
}
// select a class and check its nth permit reference
public void test564049_005() throws CoreException {
this.workingCopies = new ICompilationUnit[1];
this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/X.java",
"public sealed class X permits Y,Q{ \n" +
" }\n" +
" final class /*here*/Q extends X {}\n" +
" final class Y extends X {}\n"
);
String str = this.workingCopies[0].getSource();
String selection = "/*here*/Q";
int start = str.indexOf(selection);
int length = selection.length();
IJavaElement[] elements = this.workingCopies[0].codeSelect(start, length);
assertTrue(elements.length ==1);
assertTrue((elements[0] instanceof SourceType));
search(elements[0], REFERENCES, EXACT_RULE);
assertSearchResults(
"src/X.java X [Q] EXACT_MATCH");
}
//check for permit reference with supertype finegrain
public void test564049_006() throws CoreException {
this.workingCopies = new ICompilationUnit[1];
this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/X.java",
"public sealed class X permits Y{ \n" +
" }\n" +
" final class Y extends X {}\n"
);
IJavaProject javaProject = this.workingCopies[0].getJavaProject(); //assuming single project for all working copies
String old = javaProject.getOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, true);
try {
javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, JavaCore.ENABLED);
search("Y", CLASS, SUPERTYPE_TYPE_REFERENCE);
assertSearchResults("");
} finally {
javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, old);
}
}
//check for permit reference with permittype finegrain
public void test564049_007() throws CoreException {
this.workingCopies = new ICompilationUnit[1];
this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/X.java",
"public sealed class X permits Y{ \n" +
" }\n" +
" final class Y extends X {}\n"
);
IJavaProject javaProject = this.workingCopies[0].getJavaProject(); //assuming single project for all working copies
String old = javaProject.getOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, true);
try {
javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, JavaCore.ENABLED);
search("Y", CLASS, PERMITTYPE_TYPE_REFERENCE);
assertSearchResults("src/X.java X [Y] EXACT_MATCH");
} finally {
javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, old);
}
}
//check for permit reference with permittype or supertype finegrain
public void test564049_008() throws CoreException {
this.workingCopies = new ICompilationUnit[1];
this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/X.java",
"public sealed class X permits Y{ \n" +
" }\n" +
" final class Y extends X {}\n"
);
IJavaProject javaProject = this.workingCopies[0].getJavaProject(); //assuming single project for all working copies
String old = javaProject.getOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, true);
try {
javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, JavaCore.ENABLED);
search("Y", CLASS, PERMITTYPE_TYPE_REFERENCE | SUPERTYPE_TYPE_REFERENCE);
assertSearchResults("src/X.java X [Y] EXACT_MATCH");
} finally {
javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, old);
}
}
//check for permit reference for qualified type
public void test564049_009() throws CoreException {
this.workingCopies = new ICompilationUnit[1];
this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/p1/X.java",
"package p1;\n"+
"public sealed class X permits A.Y {\n" +
" public static void main(String[] args) {}\n" +
"}\n" +
"class A {\n" +
" sealed class Y extends X {\n" +
" final class SubInnerY extends Y {}\n" +
" } \n" +
" final class Z extends Y {}\n" +
" final class SubY extends Y {}" +
"}"
);
IJavaProject javaProject = this.workingCopies[0].getJavaProject(); //assuming single project for all working copies
String old = javaProject.getOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, true);
try {
javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, JavaCore.ENABLED);
search("A.Y", CLASS, REFERENCES);
assertSearchResults(
"src/p1/X.java p1.X [A.Y] EXACT_MATCH\n" +
"src/p1/X.java p1.A$Y$SubInnerY [Y] EXACT_MATCH\n" +
"src/p1/X.java p1.A$Z [Y] EXACT_MATCH\n" +
"src/p1/X.java p1.A$SubY [Y] EXACT_MATCH");
} finally {
javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, old);
}
}
//check for permit reference with permittype finegrain - negative test case
public void test564049_010() throws CoreException {
this.workingCopies = new ICompilationUnit[1];
this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/X.java",
"public sealed class X extends Y{ \n" +
" }\n" +
" class Y {}\n"
);
IJavaProject javaProject = this.workingCopies[0].getJavaProject(); //assuming single project for all working copies
String old = javaProject.getOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, true);
try {
javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, JavaCore.ENABLED);
search("Y", CLASS, PERMITTYPE_TYPE_REFERENCE);
assertSearchResults("");
} finally {
javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, old);
}
}
//permit reference in another file
public void test564049_011() throws CoreException {
IJavaProject project1 = createJavaProject("JavaSearchBugs15", new String[] {"src"}, new String[] {"JCL15_LIB"}, "bin", "16");
try {
Map<String, String> options = project1.getOptions(false);
options.put(JavaCore.COMPILER_COMPLIANCE, JavaCore.VERSION_16);
project1.setOptions(options);
project1.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, JavaCore.ENABLED);
project1.open(null);
createFolder("/JavaSearchBugs15/src/pack11");
String fileContent = "package pack11;\n" +
"public sealed class X11_ permits X12_{\n" +
"}\n";
String fileContent2 = "package pack11;\n" +
"final public class /*here*/X12_ extends X11_ {\n" +
"}\n";
createFile("/JavaSearchBugs15/src/pack11/X11_.java", fileContent);
createFile("/JavaSearchBugs15/src/pack11/X12_.java",fileContent2);
ICompilationUnit unit = getCompilationUnit("/JavaSearchBugs15/src/pack11/X12_.java");
String x11 = "/*here*/X12_";
int start = fileContent2.indexOf(x11);
IJavaElement[] elements = unit.codeSelect(start, x11.length());
assertTrue(elements.length ==1);
IJavaSearchScope scope = SearchEngine.createWorkspaceScope();
search(elements[0].getElementName(), TYPE, PERMITTYPE_TYPE_REFERENCE, EXACT_RULE, scope);
assertSearchResults("src/pack11/X11_.java pack11.X11_ [X12_] EXACT_MATCH");
} finally {
deleteProject(project1);
}
}
public void testRecordReferenceInNonSourceJar() throws CoreException {
IType typeRecord = getClassFile("JavaSearchBugs", "lib/record_reference_in_nonsource_jar.jar", "pack", "rr.class").getType();//record
search(
typeRecord,
ALL_OCCURRENCES,
getJavaSearchScope(),
this.resultCollector);
assertSearchResults(
"lib/record_reference_in_nonsource_jar.jar pack.rr [No source] EXACT_MATCH",
this.resultCollector);
// See https://bugs.eclipse.org/bugs/show_bug.cgi?id=565180 ( reason for 1 result instead of 3)
}
public void testRecordReferenceInSourceJar() throws CoreException {
IType typeRecord = getClassFile("JavaSearchBugs", "lib/record_reference_in_source_jar.jar", "pack", "rr2.class").getType();//record
search(
typeRecord,
ALL_OCCURRENCES,
getJavaSearchScope(),
this.resultCollector);
assertSearchResults(
"lib/record_reference_in_source_jar.jar pack.c1.ob EXACT_MATCH\n" +
"lib/record_reference_in_source_jar.jar pack.c1.ob EXACT_MATCH\n" +
"lib/record_reference_in_source_jar.jar pack.rr2 EXACT_MATCH",
this.resultCollector);
}
public void testPermitReferenceInNonSourceJar() throws CoreException {
IType myClass = getClassFile("JavaSearchBugs", "lib/permit_reference_in_nonsource_jar.jar", "pack", "PermitClass.class").getType();
search(
myClass,
ALL_OCCURRENCES,
getJavaSearchScope(),
this.resultCollector);
assertSearchResults(
"lib/permit_reference_in_nonsource_jar.jar pack.PermitClass [No source] EXACT_MATCH",
this.resultCollector);
}
public void testPermitReferenceInSourceJar() throws CoreException {
IType myClass = getClassFile("JavaSearchBugs", "lib/permit_reference_in_source_jar.jar", "pack", "PermitClass2.class").getType();
search(
myClass,
ALL_OCCURRENCES,
getJavaSearchScope(),
this.resultCollector);
assertSearchResults(
"lib/permit_reference_in_source_jar.jar pack.MyClass2 EXACT_MATCH\n" +
"lib/permit_reference_in_source_jar.jar pack.PermitClass2 EXACT_MATCH",
this.resultCollector);
}
public void testAnnotationsInRecords1() throws CoreException {
this.workingCopies = new ICompilationUnit[1];
String contents = "import java.lang.annotation.ElementType;\n" +
"import java.lang.annotation.Target;\n" +
"record X(@MyAnnot int lo) {\n" +
" public int lo() {\n" +
" return this.lo;\n" +
" }\n" +
"\n" +
"}\n" +
"@Target({ElementType.FIELD})\n" +
"@interface MyAnnot {}";
this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/X.java",contents);
IJavaProject javaProject = this.workingCopies[0].getJavaProject(); //assuming single project for all working copies
String old = javaProject.getOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, true);
try {
javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, JavaCore.ENABLED);
search("MyAnnot", ANNOTATION_TYPE, ALL_OCCURRENCES);
assertSearchResults(
"src/X.java X.lo [MyAnnot] EXACT_MATCH\n" +
"src/X.java MyAnnot [MyAnnot] EXACT_MATCH");
} finally {
javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, old);
}
}
public void testAnnotationsInRecords2() throws CoreException {
this.workingCopies = new ICompilationUnit[1];
String contents = "import java.lang.annotation.ElementType;\n" +
"import java.lang.annotation.Target;\n" +
"record X(@MyAnnot int lo) {\n" +
" public int lo() {\n" +
" return this.lo;\n" +
" }\n" +
"\n" +
"}\n" +
"@Target({ElementType.FIELD})\n" +
"@interface MyAnnot {}";
this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/X.java",contents);
IJavaProject javaProject = this.workingCopies[0].getJavaProject(); //assuming single project for all working copies
String old = javaProject.getOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, true);
try {
javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, JavaCore.ENABLED);
search("MyAnnot", ANNOTATION_TYPE, REFERENCES);
assertSearchResults("src/X.java X.lo [MyAnnot] EXACT_MATCH");
} finally {
javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, old);
}
}
public void testAnnotationsInRecords3() throws CoreException {
this.workingCopies = new ICompilationUnit[1];
String contents = "import java.lang.annotation.ElementType;\n" +
"import java.lang.annotation.Target;\n" +
"record X(@MyAnnot int lo) {\n" +
" public static @MyAnnot int x;\n" +
" public int lo() {\n" +
" return this.lo;\n" +
" }\n" +
"\n" +
"}\n" +
"@Target({ElementType.RECORD_COMPONENT})\n" +
"@interface MyAnnot {}";
this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/X.java",contents);
IJavaProject javaProject = this.workingCopies[0].getJavaProject(); //assuming single project for all working copies
String old = javaProject.getOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, true);
try {
javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, JavaCore.ENABLED);
search("MyAnnot", ANNOTATION_TYPE, REFERENCES);
assertSearchResults(
"src/X.java X.lo [MyAnnot] EXACT_MATCH\n" +
"src/X.java X.x [MyAnnot] EXACT_MATCH");
} finally {
javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, old);
}
}
public void testAnnotationsInRecords4() throws CoreException {
this.workingCopies = new ICompilationUnit[1];
String contents = "package test1;\n" +
"import java.lang.annotation.ElementType;\n" +
"public record X() {\n" +
" static String myObject = \"Foo\";\n" +
" public void foo() {\n" +
" String myString = (@Annot String) myObject;\n" +
" String myString1 = (@Annot1 @Annot String) myObject;\n" +
" }\n" +
"}\n" +
"@java.lang.annotation.Target(value = {ElementType.TYPE_USE})\n" +
"@interface Annot {}\n" +
"@java.lang.annotation.Target(value = {ElementType.TYPE_USE})\n" +
"@interface Annot1 {}\n" +
"";
this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/X.java",contents);
IJavaProject javaProject = this.workingCopies[0].getJavaProject(); //assuming single project for all working copies
String old = javaProject.getOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, true);
try {
javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, JavaCore.ENABLED);
search("Annot", ANNOTATION_TYPE, REFERENCES);
assertSearchResults(
"src/X.java void X.foo() [Annot] EXACT_MATCH\n" +
"src/X.java void X.foo() [Annot] EXACT_MATCH");
} finally {
javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, old);
}
}
public void testAnnotationsInRecords5() throws CoreException {
this.workingCopies = new ICompilationUnit[1];
String contents = "package test1;\n" +
"import java.lang.annotation.ElementType;\n" +
"public record X() {\n" +
" static String myObject = \"Foo\";\n" +
" public void foo() {\n" +
" String myString = (@Annot String) myObject;\n" +
" String myString1 = (@Annot1 @Annot String) myObject;\n" +
" }\n" +
"}\n" +
"@java.lang.annotation.Target(value = {ElementType.TYPE_USE})\n" +
"@interface Annot {}\n" +
"@java.lang.annotation.Target(value = {ElementType.TYPE_USE})\n" +
"@interface Annot1 {}";
this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/X.java",contents);
IJavaProject javaProject = this.workingCopies[0].getJavaProject(); //assuming single project for all working copies
String old = javaProject.getOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, true);
try {
javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, JavaCore.ENABLED);
search("Annot", ANNOTATION_TYPE, REFERENCES);
assertSearchResults(
"src/X.java void X.foo() [Annot] EXACT_MATCH\n" +
"src/X.java void X.foo() [Annot] EXACT_MATCH");
} finally {
javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, old);
}
}
public void testAnnotationsInRecords6() throws CoreException {
this.workingCopies = new ICompilationUnit[1];
String contents = "package test1;\n" +
"\n" +
"import java.lang.annotation.ElementType;\n" +
"\n" +
"public record X2() {\n" +
" public interface Helper<T> {\n" +
" }\n" +
" public class Foo1<T> implements @Annot_ Helper<T> {\n" +
" }\n" +
" public class Foo2<T> implements @Annot_ @Annot1_ Helper<T> {\n" +
" }\n" +
"}\n" +
"\n" +
"@java.lang.annotation.Target (ElementType.TYPE_USE)\n" +
"@interface Annot_ {}\n" +
"\n" +
"@java.lang.annotation.Target (ElementType.TYPE_USE)\n" +
"@interface Annot1_ {}";
this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/X.java",contents);
IJavaProject javaProject = this.workingCopies[0].getJavaProject(); //assuming single project for all working copies
String old = javaProject.getOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, true);
try {
javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, JavaCore.ENABLED);
search("Annot_", ANNOTATION_TYPE, REFERENCES);
assertSearchResults(
"src/X.java X2$Foo1 [Annot_] EXACT_MATCH\n" +
"src/X.java X2$Foo2 [Annot_] EXACT_MATCH");
} finally {
javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, old);
}
}
public void testAnnotationsInRecords7() throws CoreException {
this.workingCopies = new ICompilationUnit[1];
String contents = "package test1;\n" +
"import java.lang.annotation.ElementType;\n" +
"public record X3() {\n" +
" public record Helper<T>() {\n" +
" }\n" +
" public record Base() {\n" +
" }\n" +
" public static void UnboundedWildcard1 (Helper<@Annot__ ?> x) {\n" +
" }\n" +
" public static void UnboundedWildcard2 (Helper<@Annot1__ @Annot__ ?> x) {\n" +
" }\n" +
" public static void BoundedWildcard1 (Helper<@Annot__ ? extends Base> x) {\n" +
" }\n" +
" public static void BoundedWildcard2 (Helper<@Annot1__ @Annot__ ? extends Base> x) {\n" +
" }\n" +
"}\n" +
"@java.lang.annotation.Target (ElementType.TYPE_USE)\n" +
"@interface Annot__ {}\n" +
"@java.lang.annotation.Target (ElementType.TYPE_USE)\n" +
"@interface Annot1__ {}\n" +
"";
this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/X.java",contents);
IJavaProject javaProject = this.workingCopies[0].getJavaProject(); //assuming single project for all working copies
String old = javaProject.getOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, true);
try {
javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, JavaCore.ENABLED);
search("Annot__", ANNOTATION_TYPE, REFERENCES);
assertSearchResults(
"src/X.java void X3.UnboundedWildcard1(Helper<?>) [Annot__] EXACT_MATCH\n" +
"src/X.java void X3.UnboundedWildcard2(Helper<?>) [Annot__] EXACT_MATCH\n" +
"src/X.java void X3.BoundedWildcard1(Helper<? extends Base>) [Annot__] EXACT_MATCH\n" +
"src/X.java void X3.BoundedWildcard2(Helper<? extends Base>) [Annot__] EXACT_MATCH");
} finally {
javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, old);
}
}
public void testAnnotationsInRecords8() throws CoreException {
this.workingCopies = new ICompilationUnit[1];
String contents = "package test1;\n" +
"import java.lang.annotation.Target;\n" +
"public record X() {\n" +
" public static void main(String[] args) {\n" +
" Outer outer = new Outer();\n" +
" Outer.@Marker1 Inner first = outer.new Inner();\n" +
" Outer.@Marker2 Inner second = outer.new Inner() ;\n" +
" Outer.Inner.@Marker1 Deeper deeper = second.new Deeper();\n" +
" Outer.Inner.Deeper deeper2 = second.new Deeper();\n" +
" }\n" + "}\n" + "class Outer {\n" +
" public class Inner {\n" +
" public class Deeper {\n" +
" }\n" +
" }\n" +
"}\n" +
"@Target (java.lang.annotation.ElementType.TYPE_USE)\n" +
"@interface Marker {}\n" +
"@Target (java.lang.annotation.ElementType.TYPE_USE)\n" +
"@interface Marker1 {}\n" +
"@Target (java.lang.annotation.ElementType.TYPE_USE)\n" +
"@interface Marker2 {}\n";
this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/X.java",contents);
IJavaProject javaProject = this.workingCopies[0].getJavaProject(); //assuming single project for all working copies
String old = javaProject.getOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, true);
try {
javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, JavaCore.ENABLED);
search("Marker1", ANNOTATION_TYPE, REFERENCES);
assertSearchResults(
"src/X.java void X.main(String[]) [Marker1] EXACT_MATCH\n" +
"src/X.java void X.main(String[]) [Marker1] EXACT_MATCH");
} finally {
javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, old);
}
}
// test all occurrences of annotation of non-source jar with record
public void testAnnnotationInRecordJar() throws CoreException {
IType typeRecord = getClassFile("JavaSearchBugs", "lib/annotation_in_record_jar.jar", "pack", "X99.class").getType();
search(
typeRecord,
ALL_OCCURRENCES,
getJavaSearchScope(),
this.resultCollector);
assertSearchResults(
"lib/annotation_in_record_jar.jar pack.MyRecord.lo [No source] EXACT_MATCH\n" +
"lib/annotation_in_record_jar.jar pack.X99 [No source] EXACT_MATCH",
this.resultCollector);
}
// test all occurrences of annotation of source jar with record
public void testAnnnotationInRecordSourceJar() throws CoreException {
IType typeRecord = getClassFile("JavaSearchBugs", "lib/annotation_in_record_source_jar.jar", "pack", "X100.class").getType();
search(
typeRecord,
ALL_OCCURRENCES,
getJavaSearchScope(),
this.resultCollector);
assertSearchResults(
"lib/annotation_in_record_source_jar.jar pack.MyRecord.lo EXACT_MATCH\n" +
"lib/annotation_in_record_source_jar.jar pack.X100 EXACT_MATCH",
this.resultCollector);
}
// test all reference of annotation of non-source jar with record
public void testAnnnotationJustReferenceInRecordJar() throws CoreException {
IType typeRecord = getClassFile("JavaSearchBugs", "lib/annotation_in_record_jar.jar", "pack", "X99.class").getType();
search(
typeRecord,
REFERENCES,
getJavaSearchScope(),
this.resultCollector);
assertSearchResults(
"lib/annotation_in_record_jar.jar pack.MyRecord.lo [No source] EXACT_MATCH",
this.resultCollector);
}
// test all reference of annotation of source jar with record
public void testAnnnotationJustReferenceInRecordSourceJar() throws CoreException {
IType typeRecord = getClassFile("JavaSearchBugs", "lib/annotation_in_record_source_jar.jar", "pack", "X100.class").getType();
search(
typeRecord,
REFERENCES,
getJavaSearchScope(),
this.resultCollector);
assertSearchResults(
"lib/annotation_in_record_source_jar.jar pack.MyRecord.lo EXACT_MATCH",
this.resultCollector);
}
public void test566507_componentSelectAndSearch() throws CoreException {
this.workingCopies = new ICompilationUnit[1];
this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/X.java",
"public record Point(int /* here*/comp_) { \n" +
" public Point {\n" +
" comp_=11;\n" +
" }\n" +
"public void method ( ) { \n"+
" int compp_=11;\n" +
"} \n"+
"}\n"
);
String str = this.workingCopies[0].getSource();
String selection = "/* here*/comp_";
int start = str.indexOf(selection);
int length = selection.length();
IJavaElement[] elements = this.workingCopies[0].codeSelect(start, length);
assertTrue(elements.length ==1);
assertTrue(elements[0] instanceof SourceField);
search(elements[0], REFERENCES, EXACT_RULE);
assertSearchResults(
"src/X.java Point(int) [comp_] EXACT_MATCH");
}
public void test566507_fieldSelectAndSearch() throws CoreException {
this.workingCopies = new ICompilationUnit[1];
this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/X.java",
"public record Point(int /* here*/comp_) { \n" +
" public static int staticF =0;\n" +
" public Point {\n" +
" comp_=11;\n" +
" staticF=11;\n" +
" }\n" +
"public void method ( ) { \n"+
" int compp_=11;\n" +
"} \n"+
"}\n"
);
String str = this.workingCopies[0].getSource();
String selection = "staticF";
int start = str.indexOf(selection);
int length = selection.length();
IJavaElement[] elements = this.workingCopies[0].codeSelect(start, length);
assertTrue(elements.length ==1);
assertTrue(elements[0] instanceof SourceField);
search(elements[0], ALL_OCCURRENCES, EXACT_RULE);
assertSearchResults(
"src/X.java Point.staticF [staticF] EXACT_MATCH\n" +
"src/X.java Point(int) [staticF] EXACT_MATCH");
}
public void test566062_001() throws CoreException {
this.workingCopies = new ICompilationUnit[2];
this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/pack/test.java",
"public class /* here*/test { \n" +
" /**\n" +
" * @see mod.one/pack.test\n" +
" */\n" +
" public void method ( ) { \n"+
" int compp_=11;\n" +
" } \n"+
" /**\n" +
" * {@link mod.one/pack.test abc}\n" +
" */\n" +
" public void apply ( ) { \n"+
" int compp_=11;\n" +
" } \n"+
" /**\n" +
" * {@linkplain mod.one/pack.test abc}\n" +
" */\n" +
" public void evaluate ( ) { \n"+
" int compp_=11;\n" +
" } \n"+
"}\n"
);
this.workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/module-info.java",
"import pack.*;\n" +
"module mod.one {}");
String str = this.workingCopies[0].getSource();
String selection = "test";
int start = str.indexOf(selection);
int length = selection.length();
IJavaElement[] elements = this.workingCopies[0].codeSelect(start, length);
assertTrue(elements.length ==1);
search(elements[0], ALL_OCCURRENCES, EXACT_RULE);
assertSearchResults(
"src/pack/test.java pack.test [test] EXACT_MATCH\n"+
"src/pack/test.java void pack.test.method() [pack.test] EXACT_MATCH\n"+
"src/pack/test.java void pack.test.apply() [pack.test] EXACT_MATCH\n"+
"src/pack/test.java void pack.test.evaluate() [pack.test] EXACT_MATCH");
}
public void test566062_002() throws CoreException {
this.workingCopies = new ICompilationUnit[2];
this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/pack/test.java",
"public class test { \n" +
" public int /* here*/val;" +
" /**\n" +
" * @see mod.one/pack.test#val\n" +
" */\n" +
" public void method ( ) { \n"+
" int compp_=11;\n" +
" } \n"+
" /**\n" +
" * {@link mod.one/pack.test#val abc}\n" +
" */\n" +
" public void apply ( ) { \n"+
" int compp_=11;\n" +
" } \n"+
" /**\n" +
" * {@linkplain mod.one/pack.test#val abc}\n" +
" */\n" +
" public void evaluate ( ) { \n"+
" int compp_=11;\n" +
" } \n"+
"}\n"
);
this.workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/module-info.java",
"import pack.*;\n" +
"module mod.one {}");
String str = this.workingCopies[0].getSource();
String selection = "val";
int start = str.indexOf(selection);
int length = selection.length();
IJavaElement[] elements = this.workingCopies[0].codeSelect(start, length);
assertTrue(elements.length ==1);
search(elements[0], ALL_OCCURRENCES, EXACT_RULE);
assertSearchResults(
"src/pack/test.java pack.test.val [val] EXACT_MATCH\n"+
"src/pack/test.java void pack.test.method() [val] EXACT_MATCH\n"+
"src/pack/test.java void pack.test.apply() [val] EXACT_MATCH\n"+
"src/pack/test.java void pack.test.evaluate() [val] EXACT_MATCH");
}
public void test566062_003() throws CoreException {
this.workingCopies = new ICompilationUnit[2];
this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/pack/test.java",
"public class test { \n" +
" public void /* here*/setComp ( ) { \n"+
" int compp_=11;\n" +
" } \n"+
" /**\n" +
" * @see mod.one/pack.test#setComp()\n" +
" */\n" +
" public void method ( ) { \n"+
" int compp_=11;\n" +
" } \n"+
" /**\n" +
" * {@link mod.one/pack.test#setComp() setComp}\n" +
" */\n" +
" public void apply ( ) { \n"+
" int compp_=11;\n" +
" } \n"+
" /**\n" +
" * {@linkplain mod.one/pack.test#setComp() setComp}\n" +
" */\n" +
" public void evaluate ( ) { \n"+
" int compp_=11;\n" +
" } \n"+
"}\n"
);
this.workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/module-info.java",
"import pack.*;\n" +
"module mod.one {}");
String str = this.workingCopies[0].getSource();
String selection = "setComp";
int start = str.indexOf(selection);
int length = selection.length();
IJavaElement[] elements = this.workingCopies[0].codeSelect(start, length);
assertTrue(elements.length ==1);
search(elements[0], ALL_OCCURRENCES, EXACT_RULE);
assertSearchResults(
"src/pack/test.java void pack.test.setComp() [setComp] EXACT_MATCH\n"+
"src/pack/test.java void pack.test.method() [setComp()] EXACT_MATCH\n"+
"src/pack/test.java void pack.test.apply() [setComp()] EXACT_MATCH\n"+
"src/pack/test.java void pack.test.evaluate() [setComp()] EXACT_MATCH");
}
public void test566062_004() throws CoreException {
this.workingCopies = new ICompilationUnit[2];
this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/pack/test.java",
"public class /* here*/test { \n" +
" public int /* here*/val;" +
" /**\n" +
" * @see mod.one/pack.test#apply()\n" +
" */\n" +
" public void method ( ) { \n"+
" int compp_=11;\n" +
" } \n"+
" /**\n" +
" * {@link mod.one/pack.test abc}\n" +
" */\n" +
" public void apply ( ) { \n"+
" int compp_=11;\n" +
" } \n"+
" /**\n" +
" * {@linkplain mod.one/pack.test#val abc}\n" +
" */\n" +
" public void evaluate ( ) { \n"+
" int compp_=11;\n" +
" } \n"+
"}\n"
);
this.workingCopies[1] = getWorkingCopy("/JavaSearchBugs/src/module-info.java",
"import pack.*;\n" +
"module mod.one {}");
String str = this.workingCopies[0].getSource();
String selection = "test";
int start = str.indexOf(selection);
int length = selection.length();
IJavaElement[] elements = this.workingCopies[0].codeSelect(start, length);
assertTrue(elements.length ==1);
search(elements[0], ALL_OCCURRENCES, EXACT_RULE);
assertSearchResults(
"src/pack/test.java pack.test [test] EXACT_MATCH\n"+
"src/pack/test.java void pack.test.method() [pack.test] EXACT_MATCH\n"+
"src/pack/test.java void pack.test.apply() [pack.test] EXACT_MATCH\n"+
"src/pack/test.java void pack.test.evaluate() [pack.test] EXACT_MATCH");
}
}