Skip to content

Commit 7da722e

Browse files
committed
feat: add reserved language keywords
1 parent d9a0087 commit 7da722e

File tree

4 files changed

+124
-0
lines changed

4 files changed

+124
-0
lines changed
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package(default_visibility = ["//visibility:public"])
2+
3+
filegroup(
4+
name = "lexicon_files",
5+
srcs = glob(["*.java"]),
6+
)
7+
8+
java_library(
9+
name = "lexicon",
10+
srcs = [
11+
":lexicon_files",
12+
],
13+
deps = [
14+
"@com_google_guava_guava__com_google_api_codegen//jar",
15+
],
16+
)
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
package com.google.api.generator.engine.lexicon;
2+
3+
import com.google.common.annotations.VisibleForTesting;
4+
import com.google.common.collect.ImmutableList;
5+
6+
public class Keyword {
7+
@VisibleForTesting
8+
static final ImmutableList<String> KEYWORDS =
9+
ImmutableList.of(
10+
"abstract",
11+
"continue",
12+
"for",
13+
"new",
14+
"switch",
15+
"assert",
16+
"default",
17+
"if",
18+
"package",
19+
"synchronized",
20+
"boolean",
21+
"do",
22+
"goto",
23+
"private",
24+
"this",
25+
"break",
26+
"double",
27+
"implements",
28+
"protected",
29+
"throw",
30+
"byte",
31+
"else",
32+
"import",
33+
"public",
34+
"throws",
35+
"case",
36+
"enum",
37+
"instanceof",
38+
"return",
39+
"transient",
40+
"catch",
41+
"extends",
42+
"int",
43+
"short",
44+
"try",
45+
"char",
46+
"final",
47+
"interface",
48+
"static",
49+
"void",
50+
"class",
51+
"finally",
52+
"long",
53+
"strictfp",
54+
"volatile",
55+
"const",
56+
"float",
57+
"native",
58+
"super",
59+
"while");
60+
61+
public static boolean isKeyword(String s) {
62+
return KEYWORDS.contains(s);
63+
}
64+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package(default_visibility = ["//visibility:public"])
2+
3+
TESTS = [
4+
"KeywordTest",
5+
]
6+
7+
[java_test(
8+
name = test_name,
9+
srcs = ["{0}.java".format(test_name)],
10+
test_class = "com.google.api.generator.engine.lexicon.{0}".format(test_name),
11+
deps = [
12+
"//src/main/java/com/google/api/generator/engine/lexicon",
13+
"@com_google_truth_truth//jar",
14+
],
15+
) for test_name in TESTS]
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package com.google.api.generator.engine.lexicon;
2+
3+
import static com.google.common.truth.Truth.assertThat;
4+
5+
import org.junit.Test;
6+
7+
public class KeywordTest {
8+
@Test
9+
public void keywordTest() {
10+
// Modifiers.
11+
assertThat(Keyword.isKeyword("static")).isTrue();
12+
assertThat(Keyword.isKeyword("private")).isTrue();
13+
14+
// Other semantic blocks..
15+
assertThat(Keyword.isKeyword("throws")).isTrue();
16+
assertThat(Keyword.isKeyword("try")).isTrue();
17+
assertThat(Keyword.isKeyword("for")).isTrue();
18+
19+
// Primitive types.
20+
assertThat(Keyword.isKeyword("int")).isTrue();
21+
assertThat(Keyword.isKeyword("char")).isTrue();
22+
23+
// Literal values.
24+
assertThat(Keyword.isKeyword("false")).isFalse();
25+
assertThat(Keyword.isKeyword("null")).isFalse();
26+
assertThat(Keyword.isKeyword("asdf")).isFalse();
27+
assertThat(Keyword.isKeyword("12345")).isFalse();
28+
}
29+
}

0 commit comments

Comments
 (0)