View | Details | Raw Unified | Return to bug 236306 | Differences between
and this patch

Collapse All | Expand All

(-)codeassist/org/eclipse/jdt/internal/codeassist/InternalExtendedCompletionContext.java (-1 / +18 lines)
Lines 19-24 Link Here
19
import org.eclipse.jdt.core.JavaModelException;
19
import org.eclipse.jdt.core.JavaModelException;
20
import org.eclipse.jdt.core.WorkingCopyOwner;
20
import org.eclipse.jdt.core.WorkingCopyOwner;
21
import org.eclipse.jdt.core.compiler.CharOperation;
21
import org.eclipse.jdt.core.compiler.CharOperation;
22
import org.eclipse.jdt.internal.codeassist.complete.CompletionNodeDetector;
22
import org.eclipse.jdt.internal.codeassist.complete.CompletionParser;
23
import org.eclipse.jdt.internal.codeassist.complete.CompletionParser;
23
import org.eclipse.jdt.internal.codeassist.impl.AssistCompilationUnit;
24
import org.eclipse.jdt.internal.codeassist.impl.AssistCompilationUnit;
24
import org.eclipse.jdt.internal.compiler.ast.ASTNode;
25
import org.eclipse.jdt.internal.compiler.ast.ASTNode;
Lines 717-723 Link Here
717
718
718
						if (local.isSecret())
719
						if (local.isSecret())
719
							continue next;
720
							continue next;
720
721
						// If the local variable declaration's initialization statement itself has the completion,
722
						// then don't propose the local variable
723
						if (local.declaration.initialization != null) {
724
							if(local.declaration.initialization.sourceEnd > 0) {
725
									if (this.assistNode.sourceEnd <= local.declaration.initialization.sourceEnd
726
											&& this.assistNode.sourceStart >= local.declaration.initialization.sourceStart) {
727
										continue next;
728
									}
729
							} else {
730
								CompletionNodeDetector detector = new CompletionNodeDetector(
731
										this.assistNode,
732
										local.declaration.initialization);
733
								if (detector.containsCompletionNode()) {
734
									continue next;
735
								}
736
							}
737
						}
721
						for (int f = 0; f < localsFound.size; f++) {
738
						for (int f = 0; f < localsFound.size; f++) {
722
							LocalVariableBinding otherLocal =
739
							LocalVariableBinding otherLocal =
723
								(LocalVariableBinding) localsFound.elementAt(f);
740
								(LocalVariableBinding) localsFound.elementAt(f);
(-)src/org/eclipse/jdt/core/tests/model/CompletionContextTests.java (-1 / +364 lines)
Lines 1-5 Link Here
1
/*******************************************************************************
1
/*******************************************************************************
2
 * Copyright (c) 2005, 2008 IBM Corporation and others.
2
 * Copyright (c) 2005, 2010 IBM Corporation and others.
3
 * All rights reserved. This program and the accompanying materials
3
 * All rights reserved. This program and the accompanying materials
4
 * are made available under the terms of the Eclipse Public License v1.0
4
 * are made available under the terms of the Eclipse Public License v1.0
5
 * which accompanies this distribution, and is available at
5
 * which accompanies this distribution, and is available at
Lines 4928-4931 Link Here
4928
		"completion token location=UNKNOWN",
4928
		"completion token location=UNKNOWN",
4929
		result.context);
4929
		result.context);
4930
}
4930
}
4931
4932
// https://bugs.eclipse.org/bugs/show_bug.cgi?id=236306
4933
public void test0167() throws JavaModelException {
4934
	this.workingCopies = new ICompilationUnit[3];
4935
	this.workingCopies[0] = getWorkingCopy(
4936
		"/Completion/src3/test/X.java",
4937
		"package test;\n" +
4938
		"import java.text.MessageFormat;\n" +
4939
		"public class X {\n" +
4940
		"  public void foo() {\n" +
4941
		"    String fooBar = \"Hi\";" +
4942
		"	 String furchtbar= MessageFormat.format\n" +
4943
		"  }\n" +
4944
		"}");
4945
4946
	String str = this.workingCopies[0].getSource();
4947
	int tokenStart = str.lastIndexOf("format");
4948
	int tokenEnd = tokenStart + "format".length() - 1;
4949
	int cursorLocation = str.lastIndexOf("format") + "format".length();
4950
4951
	CompletionResult result = contextComplete(this.workingCopies[0], cursorLocation, true, true);
4952
	String jclPath = getExternalJCLPathString();
4953
	assertResults(
4954
		"completion offset="+(cursorLocation)+"\n" +
4955
		"completion range=["+(tokenStart)+", "+(tokenEnd)+"]\n" +
4956
		"completion token=\"format\"\n" +
4957
		"completion token kind=TOKEN_KIND_NAME\n" +
4958
		"expectedTypesSignatures={Ljava.lang.String;}\n" +
4959
		"expectedTypesKeys={Ljava/lang/String;}\n" +
4960
		"completion token location=UNKNOWN\n" +
4961
		"enclosingElement=foo() {key=Ltest/X;.foo()V} [in X [in [Working copy] X.java [in test [in src3 [in Completion]]]]]\n" +
4962
		"visibleElements={\n" +
4963
		"	fooBar [in foo() [in X [in [Working copy] X.java [in test [in src3 [in Completion]]]]]],\n" +
4964
		"	foo() {key=Ltest/X;.foo()V} [in X [in [Working copy] X.java [in test [in src3 [in Completion]]]]],\n" +
4965
		"	wait(long, int) {key=Ljava/lang/Object;.wait(JI)V|Ljava/lang/IllegalMonitorStateException;|Ljava/lang/InterruptedException;} [in Object [in Object.class [in java.lang [in " + jclPath + "]]]],\n" +
4966
		"	wait(long) {key=Ljava/lang/Object;.wait(J)V|Ljava/lang/IllegalMonitorStateException;|Ljava/lang/InterruptedException;} [in Object [in Object.class [in java.lang [in " + jclPath + "]]]],\n" +
4967
		"	wait() {key=Ljava/lang/Object;.wait()V|Ljava/lang/IllegalMonitorStateException;|Ljava/lang/InterruptedException;} [in Object [in Object.class [in java.lang [in " + jclPath + "]]]],\n" +
4968
		"	toString() {key=Ljava/lang/Object;.toString()Ljava/lang/String;} [in Object [in Object.class [in java.lang [in " + jclPath + "]]]],\n" +
4969
		"	notifyAll() {key=Ljava/lang/Object;.notifyAll()V|Ljava/lang/IllegalMonitorStateException;} [in Object [in Object.class [in java.lang [in " + jclPath + "]]]],\n" +
4970
		"	notify() {key=Ljava/lang/Object;.notify()V|Ljava/lang/IllegalMonitorStateException;} [in Object [in Object.class [in java.lang [in " + jclPath + "]]]],\n" +
4971
		"	hashCode() {key=Ljava/lang/Object;.hashCode()I} [in Object [in Object.class [in java.lang [in " + jclPath + "]]]],\n" +
4972
		"	getClass() {key=Ljava/lang/Object;.getClass()Ljava/lang/Class;} [in Object [in Object.class [in java.lang [in " + jclPath +"]]]],\n" +
4973
		"	finalize() {key=Ljava/lang/Object;.finalize()V|Ljava/lang/Throwable;} [in Object [in Object.class [in java.lang [in " + jclPath + "]]]],\n" +
4974
		"	equals(java.lang.Object) {key=Ljava/lang/Object;.equals(Ljava/lang/Object;)Z} [in Object [in Object.class [in java.lang [in " + jclPath + "]]]],\n" +
4975
		"	clone() {key=Ljava/lang/Object;.clone()Ljava/lang/Object;|Ljava/lang/CloneNotSupportedException;} [in Object [in Object.class [in java.lang [in " + jclPath +"]]]],\n" +
4976
		"}",
4977
		result.context);
4978
}
4979
4980
// https://bugs.eclipse.org/bugs/show_bug.cgi?id=236306
4981
public void test0168() throws JavaModelException {
4982
	this.workingCopies = new ICompilationUnit[3];
4983
	this.workingCopies[0] = getWorkingCopy(
4984
		"/Completion/src3/test/X.java",
4985
		"package test;\n" +
4986
		"import java.text.MessageFormat;\n" +
4987
		"public class X {\n" +
4988
		"  public String format(String str, Object... args) {\n" +
4989
		"	 return \"hello\";\n" +
4990
		"  }\n" +
4991
		"  public void foo() {\n" +
4992
		"    String fooBar = \"Hi\";" +
4993
		"	 String furchtbar= this.format\n" +
4994
		"  }\n" +
4995
		"}");
4996
4997
	String str = this.workingCopies[0].getSource();
4998
	int tokenStart = str.lastIndexOf("format");
4999
	int tokenEnd = tokenStart + "format".length() - 1;
5000
	int cursorLocation = str.lastIndexOf("format") + "format".length();
5001
5002
	CompletionResult result = contextComplete(this.workingCopies[0], cursorLocation, true, true);
5003
	String jclPath = getExternalJCLPathString();
5004
	assertResults(
5005
		"completion offset="+(cursorLocation)+"\n" +
5006
		"completion range=["+(tokenStart)+", "+(tokenEnd)+"]\n" +
5007
		"completion token=\"format\"\n" +
5008
		"completion token kind=TOKEN_KIND_NAME\n" +
5009
		"expectedTypesSignatures={Ljava.lang.String;}\n" +
5010
		"expectedTypesKeys={Ljava/lang/String;}\n" +
5011
		"completion token location=UNKNOWN\n" +
5012
		"enclosingElement=foo() {key=Ltest/X;.foo()V} [in X [in [Working copy] X.java [in test [in src3 [in Completion]]]]]\n" +
5013
		"visibleElements={\n" +
5014
		"	fooBar [in foo() [in X [in [Working copy] X.java [in test [in src3 [in Completion]]]]]],\n" +
5015
		"	format(String, Object[]) {key=Ltest/X;.format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;} [in X [in [Working copy] X.java [in test [in src3 [in Completion]]]]],\n" +
5016
		"	foo() {key=Ltest/X;.foo()V} [in X [in [Working copy] X.java [in test [in src3 [in Completion]]]]],\n" +
5017
		"	wait(long, int) {key=Ljava/lang/Object;.wait(JI)V|Ljava/lang/IllegalMonitorStateException;|Ljava/lang/InterruptedException;} [in Object [in Object.class [in java.lang [in " + jclPath + "]]]],\n" +
5018
		"	wait(long) {key=Ljava/lang/Object;.wait(J)V|Ljava/lang/IllegalMonitorStateException;|Ljava/lang/InterruptedException;} [in Object [in Object.class [in java.lang [in " + jclPath + "]]]],\n" +
5019
		"	wait() {key=Ljava/lang/Object;.wait()V|Ljava/lang/IllegalMonitorStateException;|Ljava/lang/InterruptedException;} [in Object [in Object.class [in java.lang [in " + jclPath + "]]]],\n" +
5020
		"	toString() {key=Ljava/lang/Object;.toString()Ljava/lang/String;} [in Object [in Object.class [in java.lang [in " + jclPath + "]]]],\n" +
5021
		"	notifyAll() {key=Ljava/lang/Object;.notifyAll()V|Ljava/lang/IllegalMonitorStateException;} [in Object [in Object.class [in java.lang [in " + jclPath + "]]]],\n" +
5022
		"	notify() {key=Ljava/lang/Object;.notify()V|Ljava/lang/IllegalMonitorStateException;} [in Object [in Object.class [in java.lang [in " + jclPath + "]]]],\n" +
5023
		"	hashCode() {key=Ljava/lang/Object;.hashCode()I} [in Object [in Object.class [in java.lang [in " + jclPath + "]]]],\n" +
5024
		"	getClass() {key=Ljava/lang/Object;.getClass()Ljava/lang/Class;} [in Object [in Object.class [in java.lang [in " + jclPath +"]]]],\n" +
5025
		"	finalize() {key=Ljava/lang/Object;.finalize()V|Ljava/lang/Throwable;} [in Object [in Object.class [in java.lang [in " + jclPath + "]]]],\n" +
5026
		"	equals(java.lang.Object) {key=Ljava/lang/Object;.equals(Ljava/lang/Object;)Z} [in Object [in Object.class [in java.lang [in " + jclPath + "]]]],\n" +
5027
		"	clone() {key=Ljava/lang/Object;.clone()Ljava/lang/Object;|Ljava/lang/CloneNotSupportedException;} [in Object [in Object.class [in java.lang [in " + jclPath +"]]]],\n" +
5028
		"}",
5029
		result.context);
5030
}
5031
5032
// https://bugs.eclipse.org/bugs/show_bug.cgi?id=236306
5033
public void test0169() throws JavaModelException {
5034
	this.workingCopies = new ICompilationUnit[3];
5035
	this.workingCopies[0] = getWorkingCopy(
5036
		"/Completion/src3/test/X.java",
5037
		"package test;\n" +
5038
		"import java.text.MessageFormat;\n" +
5039
		"public class X {\n" +
5040
		"  public String format(String str, Object... args) {\n" +
5041
		"	 return \"hello\";\n" +
5042
		"  }\n" +
5043
		"  public String methods(String str, String s) {\n" +
5044
		"	 return \"hello\";\n" +
5045
		"  }\n" +
5046
		"  public void foo() {\n" +
5047
		"	 X x = new X();\n" +
5048
		"    String fooBar = \"Hi\";\n" +
5049
		"	 String furchtbar= x.methods(fooBar, format\n" +
5050
		"  }\n" +
5051
		"}");
5052
5053
	String str = this.workingCopies[0].getSource();
5054
	int tokenStart = str.lastIndexOf("format");
5055
	int tokenEnd = tokenStart + "format".length() - 1;
5056
	int cursorLocation = str.lastIndexOf("format") + "format".length();
5057
5058
	CompletionResult result = contextComplete(this.workingCopies[0], cursorLocation, true, true);
5059
	String jclPath = getExternalJCLPathString();
5060
	assertResults(
5061
		"completion offset="+(cursorLocation)+"\n" +
5062
		"completion range=["+(tokenStart)+", "+(tokenEnd)+"]\n" +
5063
		"completion token=\"format\"\n" +
5064
		"completion token kind=TOKEN_KIND_NAME\n" +
5065
		"expectedTypesSignatures={Ljava.lang.String;}\n" +
5066
		"expectedTypesKeys={Ljava/lang/String;}\n" +
5067
		"completion token location=UNKNOWN\n" +
5068
		"enclosingElement=foo() {key=Ltest/X;.foo()V} [in X [in [Working copy] X.java [in test [in src3 [in Completion]]]]]\n" +
5069
		"visibleElements={\n" +
5070
		"	x [in foo() [in X [in [Working copy] X.java [in test [in src3 [in Completion]]]]]],\n" +
5071
		"	fooBar [in foo() [in X [in [Working copy] X.java [in test [in src3 [in Completion]]]]]],\n" +
5072
		"	methods(String, String) {key=Ltest/X;.methods(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;} [in X [in [Working copy] X.java [in test [in src3 [in Completion]]]]],\n" +
5073
		"	format(String, Object[]) {key=Ltest/X;.format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;} [in X [in [Working copy] X.java [in test [in src3 [in Completion]]]]],\n" +
5074
		"	foo() {key=Ltest/X;.foo()V} [in X [in [Working copy] X.java [in test [in src3 [in Completion]]]]],\n" +
5075
		"	wait(long, int) {key=Ljava/lang/Object;.wait(JI)V|Ljava/lang/IllegalMonitorStateException;|Ljava/lang/InterruptedException;} [in Object [in Object.class [in java.lang [in " + jclPath + "]]]],\n" +
5076
		"	wait(long) {key=Ljava/lang/Object;.wait(J)V|Ljava/lang/IllegalMonitorStateException;|Ljava/lang/InterruptedException;} [in Object [in Object.class [in java.lang [in " + jclPath + "]]]],\n" +
5077
		"	wait() {key=Ljava/lang/Object;.wait()V|Ljava/lang/IllegalMonitorStateException;|Ljava/lang/InterruptedException;} [in Object [in Object.class [in java.lang [in " + jclPath + "]]]],\n" +
5078
		"	toString() {key=Ljava/lang/Object;.toString()Ljava/lang/String;} [in Object [in Object.class [in java.lang [in " + jclPath + "]]]],\n" +
5079
		"	notifyAll() {key=Ljava/lang/Object;.notifyAll()V|Ljava/lang/IllegalMonitorStateException;} [in Object [in Object.class [in java.lang [in " + jclPath + "]]]],\n" +
5080
		"	notify() {key=Ljava/lang/Object;.notify()V|Ljava/lang/IllegalMonitorStateException;} [in Object [in Object.class [in java.lang [in " + jclPath + "]]]],\n" +
5081
		"	hashCode() {key=Ljava/lang/Object;.hashCode()I} [in Object [in Object.class [in java.lang [in " + jclPath + "]]]],\n" +
5082
		"	getClass() {key=Ljava/lang/Object;.getClass()Ljava/lang/Class;} [in Object [in Object.class [in java.lang [in " + jclPath +"]]]],\n" +
5083
		"	finalize() {key=Ljava/lang/Object;.finalize()V|Ljava/lang/Throwable;} [in Object [in Object.class [in java.lang [in " + jclPath + "]]]],\n" +
5084
		"	equals(java.lang.Object) {key=Ljava/lang/Object;.equals(Ljava/lang/Object;)Z} [in Object [in Object.class [in java.lang [in " + jclPath + "]]]],\n" +
5085
		"	clone() {key=Ljava/lang/Object;.clone()Ljava/lang/Object;|Ljava/lang/CloneNotSupportedException;} [in Object [in Object.class [in java.lang [in " + jclPath +"]]]],\n" +
5086
		"}",
5087
		result.context);
5088
}
5089
5090
// https://bugs.eclipse.org/bugs/show_bug.cgi?id=236306
5091
public void test0170() throws JavaModelException {
5092
	this.workingCopies = new ICompilationUnit[3];
5093
	this.workingCopies[0] = getWorkingCopy(
5094
		"/Completion/src3/test/X.java",
5095
		"package test;\n" +
5096
		"public class X {\n" +
5097
		"  public String format(String str, Object... args) {\n" +
5098
		"	 return \"hello\";\n" +
5099
		"  }\n" +
5100
		"  public void foo() {\n" +
5101
		"    String fooBar = \"Hi\";\n" +
5102
		"	 String furchtbar= format\n" +
5103
		"  }\n" +
5104
		"}");
5105
5106
	String str = this.workingCopies[0].getSource();
5107
	int tokenStart = str.lastIndexOf("format");
5108
	int tokenEnd = tokenStart + "format".length() - 1;
5109
	int cursorLocation = str.lastIndexOf("format") + "format".length();
5110
5111
	CompletionResult result = contextComplete(this.workingCopies[0], cursorLocation, true, true);
5112
	String jclPath = getExternalJCLPathString();
5113
	assertResults(
5114
		"completion offset="+(cursorLocation)+"\n" +
5115
		"completion range=["+(tokenStart)+", "+(tokenEnd)+"]\n" +
5116
		"completion token=\"format\"\n" +
5117
		"completion token kind=TOKEN_KIND_NAME\n" +
5118
		"expectedTypesSignatures={Ljava.lang.String;}\n" +
5119
		"expectedTypesKeys={Ljava/lang/String;}\n" +
5120
		"completion token location=UNKNOWN\n" +
5121
		"enclosingElement=foo() {key=Ltest/X;.foo()V} [in X [in [Working copy] X.java [in test [in src3 [in Completion]]]]]\n" +
5122
		"visibleElements={\n" +
5123
		"	fooBar [in foo() [in X [in [Working copy] X.java [in test [in src3 [in Completion]]]]]],\n" +
5124
		"	format(String, Object[]) {key=Ltest/X;.format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;} [in X [in [Working copy] X.java [in test [in src3 [in Completion]]]]],\n" +
5125
		"	foo() {key=Ltest/X;.foo()V} [in X [in [Working copy] X.java [in test [in src3 [in Completion]]]]],\n" +
5126
		"	wait(long, int) {key=Ljava/lang/Object;.wait(JI)V|Ljava/lang/IllegalMonitorStateException;|Ljava/lang/InterruptedException;} [in Object [in Object.class [in java.lang [in " + jclPath + "]]]],\n" +
5127
		"	wait(long) {key=Ljava/lang/Object;.wait(J)V|Ljava/lang/IllegalMonitorStateException;|Ljava/lang/InterruptedException;} [in Object [in Object.class [in java.lang [in " + jclPath + "]]]],\n" +
5128
		"	wait() {key=Ljava/lang/Object;.wait()V|Ljava/lang/IllegalMonitorStateException;|Ljava/lang/InterruptedException;} [in Object [in Object.class [in java.lang [in " + jclPath + "]]]],\n" +
5129
		"	toString() {key=Ljava/lang/Object;.toString()Ljava/lang/String;} [in Object [in Object.class [in java.lang [in " + jclPath + "]]]],\n" +
5130
		"	notifyAll() {key=Ljava/lang/Object;.notifyAll()V|Ljava/lang/IllegalMonitorStateException;} [in Object [in Object.class [in java.lang [in " + jclPath + "]]]],\n" +
5131
		"	notify() {key=Ljava/lang/Object;.notify()V|Ljava/lang/IllegalMonitorStateException;} [in Object [in Object.class [in java.lang [in " + jclPath + "]]]],\n" +
5132
		"	hashCode() {key=Ljava/lang/Object;.hashCode()I} [in Object [in Object.class [in java.lang [in " + jclPath + "]]]],\n" +
5133
		"	getClass() {key=Ljava/lang/Object;.getClass()Ljava/lang/Class;} [in Object [in Object.class [in java.lang [in " + jclPath +"]]]],\n" +
5134
		"	finalize() {key=Ljava/lang/Object;.finalize()V|Ljava/lang/Throwable;} [in Object [in Object.class [in java.lang [in " + jclPath + "]]]],\n" +
5135
		"	equals(java.lang.Object) {key=Ljava/lang/Object;.equals(Ljava/lang/Object;)Z} [in Object [in Object.class [in java.lang [in " + jclPath + "]]]],\n" +
5136
		"	clone() {key=Ljava/lang/Object;.clone()Ljava/lang/Object;|Ljava/lang/CloneNotSupportedException;} [in Object [in Object.class [in java.lang [in " + jclPath +"]]]],\n" +
5137
		"}",
5138
		result.context);
5139
}
5140
5141
// https://bugs.eclipse.org/bugs/show_bug.cgi?id=236306
5142
public void test0171() throws JavaModelException {
5143
	this.workingCopies = new ICompilationUnit[3];
5144
	this.workingCopies[0] = getWorkingCopy(
5145
		"/Completion/src3/test/X.java",
5146
		"package test;\n" +
5147
		"import java.text.MessageFormat;\n" +
5148
		"public class X {\n" +
5149
		"  public String format(String str, Object... args) {\n" +
5150
		"	 return \"hello\";\n" +
5151
		"  }\n" +
5152
		"  public void foo() {\n" +
5153
		"    String fooBar = \"Hi\";\n" +
5154
		"	 String furchtbar= new String(MessageFormat.format\n" +
5155
		"  }\n" +
5156
		"}");
5157
5158
	String str = this.workingCopies[0].getSource();
5159
	int tokenStart = str.lastIndexOf("format");
5160
	int tokenEnd = tokenStart + "format".length() - 1;
5161
	int cursorLocation = str.lastIndexOf("format") + "format".length();
5162
5163
	CompletionResult result = contextComplete(this.workingCopies[0], cursorLocation, true, true);
5164
	String jclPath = getExternalJCLPathString();
5165
	assertResults(
5166
		"completion offset="+(cursorLocation)+"\n" +
5167
		"completion range=["+(tokenStart)+", "+(tokenEnd)+"]\n" +
5168
		"completion token=\"format\"\n" +
5169
		"completion token kind=TOKEN_KIND_NAME\n" +
5170
		"expectedTypesSignatures=null\n" +
5171
		"expectedTypesKeys=null\n" +
5172
		"completion token location=UNKNOWN\n" +
5173
		"enclosingElement=foo() {key=Ltest/X;.foo()V} [in X [in [Working copy] X.java [in test [in src3 [in Completion]]]]]\n" +
5174
		"visibleElements={\n" +
5175
		"	fooBar [in foo() [in X [in [Working copy] X.java [in test [in src3 [in Completion]]]]]],\n" +
5176
		"	format(String, Object[]) {key=Ltest/X;.format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;} [in X [in [Working copy] X.java [in test [in src3 [in Completion]]]]],\n" +
5177
		"	foo() {key=Ltest/X;.foo()V} [in X [in [Working copy] X.java [in test [in src3 [in Completion]]]]],\n" +
5178
		"	wait(long, int) {key=Ljava/lang/Object;.wait(JI)V|Ljava/lang/IllegalMonitorStateException;|Ljava/lang/InterruptedException;} [in Object [in Object.class [in java.lang [in " + jclPath + "]]]],\n" +
5179
		"	wait(long) {key=Ljava/lang/Object;.wait(J)V|Ljava/lang/IllegalMonitorStateException;|Ljava/lang/InterruptedException;} [in Object [in Object.class [in java.lang [in " + jclPath + "]]]],\n" +
5180
		"	wait() {key=Ljava/lang/Object;.wait()V|Ljava/lang/IllegalMonitorStateException;|Ljava/lang/InterruptedException;} [in Object [in Object.class [in java.lang [in " + jclPath + "]]]],\n" +
5181
		"	toString() {key=Ljava/lang/Object;.toString()Ljava/lang/String;} [in Object [in Object.class [in java.lang [in " + jclPath + "]]]],\n" +
5182
		"	notifyAll() {key=Ljava/lang/Object;.notifyAll()V|Ljava/lang/IllegalMonitorStateException;} [in Object [in Object.class [in java.lang [in " + jclPath + "]]]],\n" +
5183
		"	notify() {key=Ljava/lang/Object;.notify()V|Ljava/lang/IllegalMonitorStateException;} [in Object [in Object.class [in java.lang [in " + jclPath + "]]]],\n" +
5184
		"	hashCode() {key=Ljava/lang/Object;.hashCode()I} [in Object [in Object.class [in java.lang [in " + jclPath + "]]]],\n" +
5185
		"	getClass() {key=Ljava/lang/Object;.getClass()Ljava/lang/Class;} [in Object [in Object.class [in java.lang [in " + jclPath +"]]]],\n" +
5186
		"	finalize() {key=Ljava/lang/Object;.finalize()V|Ljava/lang/Throwable;} [in Object [in Object.class [in java.lang [in " + jclPath + "]]]],\n" +
5187
		"	equals(java.lang.Object) {key=Ljava/lang/Object;.equals(Ljava/lang/Object;)Z} [in Object [in Object.class [in java.lang [in " + jclPath + "]]]],\n" +
5188
		"	clone() {key=Ljava/lang/Object;.clone()Ljava/lang/Object;|Ljava/lang/CloneNotSupportedException;} [in Object [in Object.class [in java.lang [in " + jclPath +"]]]],\n" +
5189
		"}",
5190
		result.context);
5191
}
5192
5193
// https://bugs.eclipse.org/bugs/show_bug.cgi?id=236306
5194
public void test0172() throws JavaModelException {
5195
	this.workingCopies = new ICompilationUnit[3];
5196
	this.workingCopies[0] = getWorkingCopy(
5197
		"/Completion/src3/test/X.java",
5198
		"package test;\n" +
5199
		"import java.text.MessageFormat;\n" +
5200
		"public class X {\n" +
5201
		"  public String format(String str, Object... args) {\n" +
5202
		"	 return \"hello\";\n" +
5203
		"  }\n" +
5204
		"  public void foo() {\n" +
5205
		"    String fooBar = \"Hi\";\n" +
5206
		"	 int i = 1;\n" +
5207
		"	 String furchtbar= (i < 1) ? fooBar : format\n" +
5208
		"  }\n" +
5209
		"}");
5210
5211
	String str = this.workingCopies[0].getSource();
5212
	int tokenStart = str.lastIndexOf("format");
5213
	int tokenEnd = tokenStart + "format".length() - 1;
5214
	int cursorLocation = str.lastIndexOf("format") + "format".length();
5215
5216
	CompletionResult result = contextComplete(this.workingCopies[0], cursorLocation, true, true);
5217
	String jclPath = getExternalJCLPathString();
5218
	assertResults(
5219
		"completion offset="+(cursorLocation)+"\n" +
5220
		"completion range=["+(tokenStart)+", "+(tokenEnd)+"]\n" +
5221
		"completion token=\"format\"\n" +
5222
		"completion token kind=TOKEN_KIND_NAME\n" +
5223
		"expectedTypesSignatures=null\n" +
5224
		"expectedTypesKeys=null\n" +
5225
		"completion token location={STATEMENT_START}\n" +
5226
		"enclosingElement=foo() {key=Ltest/X;.foo()V} [in X [in [Working copy] X.java [in test [in src3 [in Completion]]]]]\n" +
5227
		"visibleElements={\n" +
5228
		"	fooBar [in foo() [in X [in [Working copy] X.java [in test [in src3 [in Completion]]]]]],\n" +
5229
		"	i [in foo() [in X [in [Working copy] X.java [in test [in src3 [in Completion]]]]]],\n" +
5230
		"	format(String, Object[]) {key=Ltest/X;.format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;} [in X [in [Working copy] X.java [in test [in src3 [in Completion]]]]],\n" +
5231
		"	foo() {key=Ltest/X;.foo()V} [in X [in [Working copy] X.java [in test [in src3 [in Completion]]]]],\n" +
5232
		"	wait(long, int) {key=Ljava/lang/Object;.wait(JI)V|Ljava/lang/IllegalMonitorStateException;|Ljava/lang/InterruptedException;} [in Object [in Object.class [in java.lang [in " + jclPath + "]]]],\n" +
5233
		"	wait(long) {key=Ljava/lang/Object;.wait(J)V|Ljava/lang/IllegalMonitorStateException;|Ljava/lang/InterruptedException;} [in Object [in Object.class [in java.lang [in " + jclPath + "]]]],\n" +
5234
		"	wait() {key=Ljava/lang/Object;.wait()V|Ljava/lang/IllegalMonitorStateException;|Ljava/lang/InterruptedException;} [in Object [in Object.class [in java.lang [in " + jclPath + "]]]],\n" +
5235
		"	toString() {key=Ljava/lang/Object;.toString()Ljava/lang/String;} [in Object [in Object.class [in java.lang [in " + jclPath + "]]]],\n" +
5236
		"	notifyAll() {key=Ljava/lang/Object;.notifyAll()V|Ljava/lang/IllegalMonitorStateException;} [in Object [in Object.class [in java.lang [in " + jclPath + "]]]],\n" +
5237
		"	notify() {key=Ljava/lang/Object;.notify()V|Ljava/lang/IllegalMonitorStateException;} [in Object [in Object.class [in java.lang [in " + jclPath + "]]]],\n" +
5238
		"	hashCode() {key=Ljava/lang/Object;.hashCode()I} [in Object [in Object.class [in java.lang [in " + jclPath + "]]]],\n" +
5239
		"	getClass() {key=Ljava/lang/Object;.getClass()Ljava/lang/Class;} [in Object [in Object.class [in java.lang [in " + jclPath +"]]]],\n" +
5240
		"	finalize() {key=Ljava/lang/Object;.finalize()V|Ljava/lang/Throwable;} [in Object [in Object.class [in java.lang [in " + jclPath + "]]]],\n" +
5241
		"	equals(java.lang.Object) {key=Ljava/lang/Object;.equals(Ljava/lang/Object;)Z} [in Object [in Object.class [in java.lang [in " + jclPath + "]]]],\n" +
5242
		"	clone() {key=Ljava/lang/Object;.clone()Ljava/lang/Object;|Ljava/lang/CloneNotSupportedException;} [in Object [in Object.class [in java.lang [in " + jclPath +"]]]],\n" +
5243
		"}",
5244
		result.context);
5245
}
5246
5247
// https://bugs.eclipse.org/bugs/show_bug.cgi?id=236306
5248
public void test0173() throws JavaModelException {
5249
	this.workingCopies = new ICompilationUnit[3];
5250
	this.workingCopies[0] = getWorkingCopy(
5251
		"/Completion/src3/test/X.java",
5252
		"package test;\n" +
5253
		"import java.text.MessageFormat;\n" +
5254
		"public class X {\n" +
5255
		"  public void foo() {\n" +
5256
		"    String fooBar = \"Hi\";\n" +
5257
		"	 String furchtbar= (fooBar = String.format\n" +
5258
		"  }\n" +
5259
		"}");
5260
5261
	String str = this.workingCopies[0].getSource();
5262
	int tokenStart = str.lastIndexOf("format");
5263
	int tokenEnd = tokenStart + "format".length() - 1;
5264
	int cursorLocation = str.lastIndexOf("format") + "format".length();
5265
5266
	CompletionResult result = contextComplete(this.workingCopies[0], cursorLocation, true, true);
5267
	String jclPath = getExternalJCLPathString();
5268
	assertResults(
5269
		"completion offset="+(cursorLocation)+"\n" +
5270
		"completion range=["+(tokenStart)+", "+(tokenEnd)+"]\n" +
5271
		"completion token=\"format\"\n" +
5272
		"completion token kind=TOKEN_KIND_NAME\n" +
5273
		"expectedTypesSignatures={Ljava.lang.String;}\n" +
5274
		"expectedTypesKeys={Ljava/lang/String;}\n" +
5275
		"completion token location=UNKNOWN\n" +
5276
		"enclosingElement=foo() {key=Ltest/X;.foo()V} [in X [in [Working copy] X.java [in test [in src3 [in Completion]]]]]\n" +
5277
		"visibleElements={\n" +
5278
		"	fooBar [in foo() [in X [in [Working copy] X.java [in test [in src3 [in Completion]]]]]],\n" +
5279
		"	foo() {key=Ltest/X;.foo()V} [in X [in [Working copy] X.java [in test [in src3 [in Completion]]]]],\n" +
5280
		"	wait(long, int) {key=Ljava/lang/Object;.wait(JI)V|Ljava/lang/IllegalMonitorStateException;|Ljava/lang/InterruptedException;} [in Object [in Object.class [in java.lang [in " + jclPath + "]]]],\n" +
5281
		"	wait(long) {key=Ljava/lang/Object;.wait(J)V|Ljava/lang/IllegalMonitorStateException;|Ljava/lang/InterruptedException;} [in Object [in Object.class [in java.lang [in " + jclPath + "]]]],\n" +
5282
		"	wait() {key=Ljava/lang/Object;.wait()V|Ljava/lang/IllegalMonitorStateException;|Ljava/lang/InterruptedException;} [in Object [in Object.class [in java.lang [in " + jclPath + "]]]],\n" +
5283
		"	toString() {key=Ljava/lang/Object;.toString()Ljava/lang/String;} [in Object [in Object.class [in java.lang [in " + jclPath + "]]]],\n" +
5284
		"	notifyAll() {key=Ljava/lang/Object;.notifyAll()V|Ljava/lang/IllegalMonitorStateException;} [in Object [in Object.class [in java.lang [in " + jclPath + "]]]],\n" +
5285
		"	notify() {key=Ljava/lang/Object;.notify()V|Ljava/lang/IllegalMonitorStateException;} [in Object [in Object.class [in java.lang [in " + jclPath + "]]]],\n" +
5286
		"	hashCode() {key=Ljava/lang/Object;.hashCode()I} [in Object [in Object.class [in java.lang [in " + jclPath + "]]]],\n" +
5287
		"	getClass() {key=Ljava/lang/Object;.getClass()Ljava/lang/Class;} [in Object [in Object.class [in java.lang [in " + jclPath +"]]]],\n" +
5288
		"	finalize() {key=Ljava/lang/Object;.finalize()V|Ljava/lang/Throwable;} [in Object [in Object.class [in java.lang [in " + jclPath + "]]]],\n" +
5289
		"	equals(java.lang.Object) {key=Ljava/lang/Object;.equals(Ljava/lang/Object;)Z} [in Object [in Object.class [in java.lang [in " + jclPath + "]]]],\n" +
5290
		"	clone() {key=Ljava/lang/Object;.clone()Ljava/lang/Object;|Ljava/lang/CloneNotSupportedException;} [in Object [in Object.class [in java.lang [in " + jclPath +"]]]],\n" +
5291
		"}",
5292
		result.context);
5293
}
4931
}
5294
}

Return to bug 236306