File: java_contextual_keywords.java

package info (click to toggle)
vim 2%3A9.1.2103-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 93,456 kB
  • sloc: ansic: 433,730; cpp: 6,399; makefile: 4,597; sh: 2,397; java: 2,312; xml: 2,099; python: 1,595; perl: 1,419; awk: 730; lisp: 501; cs: 458; objc: 369; sed: 8; csh: 6; haskell: 1
file content (52 lines) | stat: -rw-r--r-- 2,031 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
// VIM_TEST_SETUP highlight link javaConceptKind NonText



class ContextualKeywordsTests		// See JLS, ยง3.9 Keywords.
{
	private ContextualKeywordsTests() { throw new Error(); }

	// ModuleDeclaration: module open.
	void module()	{ Object module = null;		when(); }
	void open()	{ Object open = null;		module(); }
	// ModuleDirective: exports opens provides requires to uses with.
	void exports()	{ Object exports = null;	open(); }
	void opens()	{ Object opens = null;		exports(); }
	void provides()	{ Object provides = null;	opens(); }
	void requires()	{ Object requires = null;	provides(); }
	void to()	{ Object to = null;		requires(); }
	void uses()	{ Object uses = null;		to(); }
	void with()	{ Object with = null;		uses(); }
	// RequiresModifier: transitive.
	void transitive() { Object transitive = null;	with(); }
	// LocalVariableType | LambdaParameterType: var.
	void var()	{ var var = new Object();	transitive(); }
	// YieldStatement: yield (see java_switch.java).
	void yield()	{ Object yield = null;		var(); }
	// RecordDeclaration: record.
	void record()	{ Object record = null;		this.yield(); }
	// Normal{Class,Interface}Declaration: non-sealed permits sealed.
	void permits()	{ Object permits = null;	record(); }
	void sealed()	{ Object sealed = null;		permits(); }
	// Guard: when (see java_switch.java).
	void when()	{ Object when = null;		sealed(); }

	sealed interface I1 permits C1, I3 { }
	sealed interface I2 permits C1, I3 { }
	non-sealed interface I3 extends I1, I2 { }
	interface I4 extends I3 { }

	abstract sealed class C1 implements I1, I2 permits C2, C3 { }
	abstract non-sealed class C2 extends C1 { }
	final class C3 extends C1 implements I3 { }
	class C4 extends C2 { }

	record R() implements I3 { }
	enum E implements I3 { INSTANCE }

	static <T> I<T> i1() { return (var var) -> var; }
	static <T> I<T> i2() { return (T var) -> var; }
	static <T> I<T> i3() { return (var) -> var; }
	static <T> I<T> i4() { return var -> var; }
	interface I<T> { T i(T i); default I<T> self() { return this; } }
}