View | Details | Raw Unified | Return to bug 171771
Collapse All | Expand All

(-)src/org/eclipse/jdt/core/tests/model/JavadocTypeCompletionModelTest.java (+310 lines)
Lines 14-19 Link Here
14
14
15
import junit.framework.Test;
15
import junit.framework.Test;
16
16
17
import org.eclipse.jdt.core.CompletionProposal;
17
import org.eclipse.jdt.core.JavaCore;
18
import org.eclipse.jdt.core.JavaCore;
18
import org.eclipse.jdt.core.JavaModelException;
19
import org.eclipse.jdt.core.JavaModelException;
19
import org.eclipse.jdt.internal.compiler.impl.CompilerOptions;
20
import org.eclipse.jdt.internal.compiler.impl.CompilerOptions;
Lines 1030-1033 Link Here
1030
		JavaCore.setOptions(oldOptions);
1031
		JavaCore.setOptions(oldOptions);
1031
	}
1032
	}
1032
}
1033
}
1034
/**
1035
 * @category Tests for filtered completion
1036
 */
1037
public void test100() throws JavaModelException {
1038
	String source =
1039
		"package javadoc.types;\n" + 
1040
		"/**\n" + 
1041
		" * Completion after:\n" + 
1042
		" * 	bla ZBasi bla\n" + 
1043
		" */\n" + 
1044
		"public class ZBasicTestTypes {}\n";
1045
	completeInJavadoc(
1046
			"/Completion/src/javadoc/types/ZBasicTestTypes.java",
1047
			source,
1048
			true,
1049
			"ZBasi",
1050
			1,
1051
			new int[]{});
1052
	assertResults(
1053
			"ZBasicTestTypes[TYPE_REF]{ZBasicTestTypes, javadoc.types, Ljavadoc.types.ZBasicTestTypes;, null, null, "+this.positions+R_DICUNR+"}\n" + 
1054
			"ZBasicTestTypes[JAVADOC_TYPE_REF]{{@link ZBasicTestTypes}, javadoc.types, Ljavadoc.types.ZBasicTestTypes;, null, null, "+this.positions+R_DICUNRIT+"}"
1055
	);
1056
}
1057
public void test101() throws JavaModelException {
1058
	String source =
1059
		"package javadoc.types;\n" + 
1060
		"/**\n" + 
1061
		" * Completion after:\n" + 
1062
		" * 	bla ZBasi bla\n" + 
1063
		" */\n" + 
1064
		"public class ZBasicTestTypes {}\n";
1065
	completeInJavadoc(
1066
			"/Completion/src/javadoc/types/ZBasicTestTypes.java",
1067
			source,
1068
			true,
1069
			"ZBasi",
1070
			1,
1071
			new int[]{CompletionProposal.JAVADOC_TYPE_REF});
1072
	assertResults(
1073
			"ZBasicTestTypes[TYPE_REF]{ZBasicTestTypes, javadoc.types, Ljavadoc.types.ZBasicTestTypes;, null, null, "+this.positions+R_DICUNR+"}"
1074
	);
1075
}
1076
public void test102() throws JavaModelException {
1077
	String source =
1078
		"package javadoc.types;\n" + 
1079
		"/**\n" + 
1080
		" * Completion after:\n" + 
1081
		" * 	bla ZBasi bla\n" + 
1082
		" */\n" + 
1083
		"public class ZBasicTestTypes {}\n";
1084
	completeInJavadoc(
1085
			"/Completion/src/javadoc/types/ZBasicTestTypes.java",
1086
			source,
1087
			true,
1088
			"ZBasi",
1089
			1,
1090
			new int[]{CompletionProposal.TYPE_REF});
1091
	assertResults(
1092
			"ZBasicTestTypes[JAVADOC_TYPE_REF]{{@link ZBasicTestTypes}, javadoc.types, Ljavadoc.types.ZBasicTestTypes;, null, null, "+this.positions+R_DICUNRIT+"}"
1093
	);
1094
}
1095
public void test103() throws JavaModelException {
1096
	String source =
1097
		"package javadoc.types;\n" + 
1098
		"/**\n" + 
1099
		" * Completion after:\n" + 
1100
		" * 	bla ZBasicTestTypes#fo bla\n" + 
1101
		" */\n" + 
1102
		"public class ZBasicTestTypes {\n" + 
1103
		"  public void foo() {}\n" + 
1104
		"}\n";
1105
	completeInJavadoc(
1106
			"/Completion/src/javadoc/types/ZBasicTestTypes.java",
1107
			source,
1108
			true,
1109
			"ZBasicTestTypes#fo",
1110
			1,
1111
			new int[]{});
1112
	assertResults(
1113
			"foo[JAVADOC_METHOD_REF]{{@link ZBasicTestTypes#foo()}, Ljavadoc.types.ZBasicTestTypes;, ()V, foo, null, "+this.positions+R_DICNRNSIT+"}"
1114
	);
1115
}
1116
public void test104() throws JavaModelException {
1117
	String source =
1118
		"package javadoc.types;\n" + 
1119
		"/**\n" + 
1120
		" * Completion after:\n" + 
1121
		" * 	bla ZBasicTestTypes#fo bla\n" + 
1122
		" */\n" + 
1123
		"public class ZBasicTestTypes {\n" + 
1124
		"  public void foo() {}\n" + 
1125
		"}\n";
1126
	completeInJavadoc(
1127
			"/Completion/src/javadoc/types/ZBasicTestTypes.java",
1128
			source,
1129
			true,
1130
			"ZBasicTestTypes#fo",
1131
			1,
1132
			new int[]{CompletionProposal.JAVADOC_METHOD_REF});
1133
	assertResults(
1134
			""
1135
	);
1136
}
1137
public void test105() throws JavaModelException {
1138
	String source =
1139
		"package javadoc.types;\n" + 
1140
		"/**\n" + 
1141
		" * Completion after:\n" + 
1142
		" * 	bla ZBasicTestTypes#fo bla\n" + 
1143
		" */\n" + 
1144
		"public class ZBasicTestTypes {\n" + 
1145
		"  public void foo() {}\n" + 
1146
		"}\n";
1147
	completeInJavadoc(
1148
			"/Completion/src/javadoc/types/ZBasicTestTypes.java",
1149
			source,
1150
			true,
1151
			"ZBasicTestTypes#fo",
1152
			1,
1153
			new int[]{CompletionProposal.METHOD_REF});
1154
	assertResults(
1155
			"foo[JAVADOC_METHOD_REF]{{@link ZBasicTestTypes#foo()}, Ljavadoc.types.ZBasicTestTypes;, ()V, foo, null, "+this.positions+R_DICNRNSIT+"}"
1156
	);
1157
}
1158
public void test106() throws JavaModelException {
1159
	String source =
1160
		"package javadoc.types;\n" + 
1161
		"/**\n" + 
1162
		" * Completion after:\n" + 
1163
		" * 	bla ZBasicTestTypes#fo bla\n" + 
1164
		" */\n" + 
1165
		"public class ZBasicTestTypes {\n" + 
1166
		"  public int foo;\n" + 
1167
		"}\n";
1168
	completeInJavadoc(
1169
			"/Completion/src/javadoc/types/ZBasicTestTypes.java",
1170
			source,
1171
			true,
1172
			"ZBasicTestTypes#fo",
1173
			1,
1174
			new int[]{});
1175
	assertResults(
1176
			"foo[JAVADOC_FIELD_REF]{{@link ZBasicTestTypes#foo}, Ljavadoc.types.ZBasicTestTypes;, I, foo, null, "+this.positions+R_DICNRNSIT+"}"
1177
	);
1178
}
1179
public void test107() throws JavaModelException {
1180
	String source =
1181
		"package javadoc.types;\n" + 
1182
		"/**\n" + 
1183
		" * Completion after:\n" + 
1184
		" * 	bla ZBasicTestTypes#fo bla\n" + 
1185
		" */\n" + 
1186
		"public class ZBasicTestTypes {\n" + 
1187
		"  public int foo;\n" + 
1188
		"}\n";
1189
	completeInJavadoc(
1190
			"/Completion/src/javadoc/types/ZBasicTestTypes.java",
1191
			source,
1192
			true,
1193
			"ZBasicTestTypes#fo",
1194
			1,
1195
			new int[]{CompletionProposal.JAVADOC_FIELD_REF});
1196
	assertResults(
1197
			""
1198
	);
1199
}
1200
public void test108() throws JavaModelException {
1201
	String source =
1202
		"package javadoc.types;\n" + 
1203
		"/**\n" + 
1204
		" * Completion after:\n" + 
1205
		" * 	bla ZBasicTestTypes#fo bla\n" + 
1206
		" */\n" + 
1207
		"public class ZBasicTestTypes {\n" + 
1208
		"  public int foo;\n" + 
1209
		"}\n";
1210
	completeInJavadoc(
1211
			"/Completion/src/javadoc/types/ZBasicTestTypes.java",
1212
			source,
1213
			true,
1214
			"ZBasicTestTypes#fo",
1215
			1,
1216
			new int[]{CompletionProposal.FIELD_REF});
1217
	assertResults(
1218
			"foo[JAVADOC_FIELD_REF]{{@link ZBasicTestTypes#foo}, Ljavadoc.types.ZBasicTestTypes;, I, foo, null, "+this.positions+R_DICNRNSIT+"}"
1219
	);
1220
}
1221
public void test109() throws JavaModelException {
1222
	String source =
1223
		"package javadoc.types;\n" + 
1224
		"/**\n" + 
1225
		" * Completion after:\n" + 
1226
		" * 	bla javadoc.types.ZBasi bla\n" + 
1227
		" */\n" + 
1228
		"public class ZBasicTestTypes {}\n";
1229
	completeInJavadoc(
1230
			"/Completion/src/javadoc/types/ZBasicTestTypes.java",
1231
			source,
1232
			true,
1233
			"javadoc.types.ZBasi",
1234
			1,
1235
			new int[]{});
1236
	assertResults(
1237
			"ZBasicTestTypes[TYPE_REF]{ZBasicTestTypes, javadoc.types, Ljavadoc.types.ZBasicTestTypes;, null, null, "+this.positions+R_DICNR+"}\n" + 
1238
			"ZBasicTestTypes[JAVADOC_TYPE_REF]{{@link ZBasicTestTypes}, javadoc.types, Ljavadoc.types.ZBasicTestTypes;, null, null, "+this.positions+R_DICNRIT+"}"
1239
	);
1240
}
1241
public void test110() throws JavaModelException {
1242
	String source =
1243
		"package javadoc.types;\n" + 
1244
		"/**\n" + 
1245
		" * Completion after:\n" + 
1246
		" * 	bla javadoc.types.ZBasi bla\n" + 
1247
		" */\n" + 
1248
		"public class ZBasicTestTypes {}\n";
1249
	completeInJavadoc(
1250
			"/Completion/src/javadoc/types/ZBasicTestTypes.java",
1251
			source,
1252
			true,
1253
			"javadoc.types.ZBasi",
1254
			1,
1255
			new int[]{CompletionProposal.JAVADOC_TYPE_REF});
1256
	assertResults(
1257
			"ZBasicTestTypes[TYPE_REF]{ZBasicTestTypes, javadoc.types, Ljavadoc.types.ZBasicTestTypes;, null, null, "+this.positions+R_DICNR+"}"
1258
	);
1259
}
1260
public void test111() throws JavaModelException {
1261
	String source =
1262
		"package javadoc.types;\n" + 
1263
		"/**\n" + 
1264
		" * Completion after:\n" + 
1265
		" * 	bla javadoc.types.ZBasi bla\n" + 
1266
		" */\n" + 
1267
		"public class ZBasicTestTypes {}\n";
1268
	completeInJavadoc(
1269
			"/Completion/src/javadoc/types/ZBasicTestTypes.java",
1270
			source,
1271
			true,
1272
			"javadoc.types.ZBasi",
1273
			1,
1274
			new int[]{CompletionProposal.TYPE_REF});
1275
	assertResults(
1276
			"ZBasicTestTypes[JAVADOC_TYPE_REF]{{@link ZBasicTestTypes}, javadoc.types, Ljavadoc.types.ZBasicTestTypes;, null, null, "+this.positions+R_DICNRIT+"}"
1277
	);
1278
}
1279
public void test112() throws JavaModelException {
1280
	String source =
1281
		"package javadoc.types;\n" + 
1282
		"/**\n" + 
1283
		" * Completion after:\n" + 
1284
		" * 	bla javadoc.types.ZBasicTestTypes.Inn bla\n" + 
1285
		" */\n" + 
1286
		"public class ZBasicTestTypes {\n" + 
1287
		"  public class Inner {}\n" + 
1288
		"}\n";
1289
	completeInJavadoc(
1290
			"/Completion/src/javadoc/types/ZBasicTestTypes.java",
1291
			source,
1292
			true,
1293
			"javadoc.types.ZBasicTestTypes.Inn",
1294
			1,
1295
			new int[]{});
1296
	assertResults(
1297
			"ZBasicTestTypes.Inner[TYPE_REF]{Inner, javadoc.types, Ljavadoc.types.ZBasicTestTypes$Inner;, null, null, "+this.positions+R_DICNR+"}\n" + 
1298
			"ZBasicTestTypes.Inner[JAVADOC_TYPE_REF]{{@link Inner}, javadoc.types, Ljavadoc.types.ZBasicTestTypes$Inner;, null, null, "+this.positions+R_DICNRIT+"}"
1299
	);
1300
}
1301
public void test113() throws JavaModelException {
1302
	String source =
1303
		"package javadoc.types;\n" + 
1304
		"/**\n" + 
1305
		" * Completion after:\n" + 
1306
		" * 	bla javadoc.types.ZBasicTestTypes.Inn bla\n" + 
1307
		" */\n" + 
1308
		"public class ZBasicTestTypes {\n" + 
1309
		"  public class Inner {}\n" + 
1310
		"}\n";
1311
	completeInJavadoc(
1312
			"/Completion/src/javadoc/types/ZBasicTestTypes.java",
1313
			source,
1314
			true,
1315
			"javadoc.types.ZBasicTestTypes.Inn",
1316
			1,
1317
			new int[]{CompletionProposal.JAVADOC_TYPE_REF});
1318
	assertResults(
1319
			"ZBasicTestTypes.Inner[TYPE_REF]{Inner, javadoc.types, Ljavadoc.types.ZBasicTestTypes$Inner;, null, null, "+this.positions+R_DICNR+"}"
1320
	);
1321
}
1322
public void test114() throws JavaModelException {
1323
	String source =
1324
		"package javadoc.types;\n" + 
1325
		"/**\n" + 
1326
		" * Completion after:\n" + 
1327
		" * 	bla javadoc.types.ZBasicTestTypes.Inn bla\n" + 
1328
		" */\n" + 
1329
		"public class ZBasicTestTypes {\n" + 
1330
		"  public class Inner {}\n" + 
1331
		"}\n";
1332
	completeInJavadoc(
1333
			"/Completion/src/javadoc/types/ZBasicTestTypes.java",
1334
			source,
1335
			true,
1336
			"javadoc.types.ZBasicTestTypes.Inn",
1337
			1,
1338
			new int[]{CompletionProposal.TYPE_REF});
1339
	assertResults(
1340
			"ZBasicTestTypes.Inner[JAVADOC_TYPE_REF]{{@link Inner}, javadoc.types, Ljavadoc.types.ZBasicTestTypes$Inner;, null, null, "+this.positions+R_DICNRIT+"}"
1341
	);
1342
}
1033
}
1343
}
(-)src/org/eclipse/jdt/core/tests/model/AbstractJavadocCompletionModelTest.java (-3 / +15 lines)
Lines 281-294 Link Here
281
	}
281
	}
282
282
283
	protected void completeInJavadoc(String path, String source, boolean showPositions, String completeBehind, int occurencePosition) throws JavaModelException {
283
	protected void completeInJavadoc(String path, String source, boolean showPositions, String completeBehind, int occurencePosition) throws JavaModelException {
284
		completeInJavadoc(new String[] { path, source }, showPositions, completeBehind, occurencePosition);
284
		completeInJavadoc(new String[] { path, source }, showPositions, completeBehind, occurencePosition, null);
285
	}
285
	}
286
286
287
	protected void completeInJavadoc(String path, String source, boolean showPositions, String completeBehind, int occurencePosition, int[] ignoreList) throws JavaModelException {
288
		completeInJavadoc(new String[] { path, source }, showPositions, completeBehind, occurencePosition, ignoreList);
289
	}
287
	protected void completeInJavadoc(String[] sources, boolean showPositions, String completeBehind) throws JavaModelException {
290
	protected void completeInJavadoc(String[] sources, boolean showPositions, String completeBehind) throws JavaModelException {
288
		completeInJavadoc(sources, showPositions, completeBehind, 1);
291
		completeInJavadoc(sources, showPositions, completeBehind, 1, null);
289
	}
292
	}
290
293
	
291
	protected void completeInJavadoc(String[] sources, boolean showPositions, String completeBehind, int occurencePosition) throws JavaModelException {
294
	protected void completeInJavadoc(String[] sources, boolean showPositions, String completeBehind, int occurencePosition) throws JavaModelException {
295
		completeInJavadoc(sources, showPositions, completeBehind, occurencePosition, null);
296
	}
297
298
	protected void completeInJavadoc(String[] sources, boolean showPositions, String completeBehind, int occurencePosition, int[] ignoreList) throws JavaModelException {
292
		assertNotNull("We should have sources!!!", sources);
299
		assertNotNull("We should have sources!!!", sources);
293
		assertTrue("Invalid number of sources!!!",  sources.length%2==0);
300
		assertTrue("Invalid number of sources!!!",  sources.length%2==0);
294
301
Lines 305-310 Link Here
305
		
312
		
306
		// Complete
313
		// Complete
307
		this.requestor = new CompletionTestsRequestor2(true, false, showPositions);
314
		this.requestor = new CompletionTestsRequestor2(true, false, showPositions);
315
		if (ignoreList != null) {
316
			for (int i = 0; i < ignoreList.length; i++) {
317
				this.requestor.setIgnored(ignoreList[i], true);
318
			}
319
		}
308
		String source = this.workingCopies[0].getSource();
320
		String source = this.workingCopies[0].getSource();
309
		this.replacedText = completeBehind;
321
		this.replacedText = completeBehind;
310
		this.completionStart = -1;
322
		this.completionStart = -1;
(-)codeassist/org/eclipse/jdt/internal/codeassist/CompletionEngine.java (-8 / +11 lines)
Lines 1510-1516 Link Here
1510
1510
1511
				// get the source positions of the completion identifier
1511
				// get the source positions of the completion identifier
1512
				if (qualifiedBinding instanceof ReferenceBinding && !(qualifiedBinding instanceof TypeVariableBinding)) {
1512
				if (qualifiedBinding instanceof ReferenceBinding && !(qualifiedBinding instanceof TypeVariableBinding)) {
1513
					if (!this.requestor.isIgnored(CompletionProposal.JAVADOC_TYPE_REF)) {
1513
					if (!this.requestor.isIgnored(CompletionProposal.TYPE_REF) ||
1514
							!this.requestor.isIgnored(CompletionProposal.JAVADOC_TYPE_REF)) {
1514
						int rangeStart = typeRef.completeInText() ? typeRef.sourceStart : (int) (completionPosition >>> 32);
1515
						int rangeStart = typeRef.completeInText() ? typeRef.sourceStart : (int) (completionPosition >>> 32);
1515
						setSourceRange(rangeStart, (int) completionPosition);
1516
						setSourceRange(rangeStart, (int) completionPosition);
1516
						findMemberTypes(this.completionToken,
1517
						findMemberTypes(this.completionToken,
Lines 4260-4268 Link Here
4260
			}
4261
			}
4261
				
4262
				
4262
			this.noProposal = false;
4263
			this.noProposal = false;
4263
			if(!this.requestor.isIgnored(CompletionProposal.TYPE_REF)) {
4264
			createTypeProposal(memberType, memberType.qualifiedSourceName(), IAccessRule.K_ACCESSIBLE, completionName, relevance);
4264
				createTypeProposal(memberType, memberType.qualifiedSourceName(), IAccessRule.K_ACCESSIBLE, completionName, relevance);
4265
			}
4266
		}
4265
		}
4267
	}
4266
	}
4268
4267
Lines 6321-6327 Link Here
6321
			skip = true;
6320
			skip = true;
6322
		}
6321
		}
6323
		
6322
		
6324
		boolean proposeType = !this.requestor.isIgnored(CompletionProposal.TYPE_REF);
6323
		boolean proposeType =
6324
			!this.requestor.isIgnored(CompletionProposal.TYPE_REF) ||
6325
			!this.requestor.isIgnored(CompletionProposal.JAVADOC_TYPE_REF);
6325
		
6326
		
6326
		boolean proposeAllMemberTypes = !this.assistNodeIsConstructor;
6327
		boolean proposeAllMemberTypes = !this.assistNodeIsConstructor;
6327
		
6328
		
Lines 6398-6404 Link Here
6398
					relevance += computeRelevanceForException(sourceType.sourceName);
6399
					relevance += computeRelevanceForException(sourceType.sourceName);
6399
				}
6400
				}
6400
				this.noProposal = false;
6401
				this.noProposal = false;
6401
				if(!this.requestor.isIgnored(CompletionProposal.TYPE_REF)) {
6402
				if(proposeType) {
6402
					char[] typeName = sourceType.sourceName();
6403
					char[] typeName = sourceType.sourceName();
6403
					createTypeProposal(sourceType, typeName, IAccessRule.K_ACCESSIBLE, typeName, relevance);
6404
					createTypeProposal(sourceType, typeName, IAccessRule.K_ACCESSIBLE, typeName, relevance);
6404
				}
6405
				}
Lines 6563-6569 Link Here
6563
		PackageBinding packageBinding,
6564
		PackageBinding packageBinding,
6564
		Scope scope) {
6565
		Scope scope) {
6565
6566
6566
		boolean proposeType = !this.requestor.isIgnored(CompletionProposal.TYPE_REF);
6567
		boolean proposeType =
6568
			!this.requestor.isIgnored(CompletionProposal.TYPE_REF) ||
6569
			!this.requestor.isIgnored(CompletionProposal.JAVADOC_TYPE_REF);
6567
		
6570
		
6568
		char[] qualifiedName =
6571
		char[] qualifiedName =
6569
			CharOperation.concatWith(packageBinding.compoundName, token, '.');
6572
			CharOperation.concatWith(packageBinding.compoundName, token, '.');
Lines 6642-6648 Link Here
6642
					relevance += computeRelevanceForException(sourceType.sourceName);
6645
					relevance += computeRelevanceForException(sourceType.sourceName);
6643
				}
6646
				}
6644
				this.noProposal = false;
6647
				this.noProposal = false;
6645
				if(!this.requestor.isIgnored(CompletionProposal.TYPE_REF)) {
6648
				if(proposeType) {
6646
					char[] typeName = sourceType.sourceName();
6649
					char[] typeName = sourceType.sourceName();
6647
					createTypeProposal(sourceType, typeName, IAccessRule.K_ACCESSIBLE, typeName, relevance);
6650
					createTypeProposal(sourceType, typeName, IAccessRule.K_ACCESSIBLE, typeName, relevance);
6648
				}
6651
				}
(-)model/org/eclipse/jdt/core/CompletionProposal.java (-1 / +1 lines)
Lines 446-452 Link Here
446
	/**
446
	/**
447
	 * Completion is a link reference to a method in a javadoc text.
447
	 * Completion is a link reference to a method in a javadoc text.
448
	 * This kind of completion might occur in a context like
448
	 * This kind of completion might occur in a context like
449
	 * <code>"	* blabla Runtime.get^ blabla"</code> and complete it to
449
	 * <code>"	* blabla Runtime#get^ blabla"</code> and complete it to
450
	 * <code>"	* blabla {&#64;link Runtime#getRuntime() }"</code>.
450
	 * <code>"	* blabla {&#64;link Runtime#getRuntime() }"</code>.
451
	 * <p>
451
	 * <p>
452
	 * The following additional context information is available
452
	 * The following additional context information is available

Return to bug 171771