From 31fe3a1cd85b587e78e88da3d59246f457461f84 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=AE=8B=E9=A1=B5?= <31466456+canyie@users.noreply.github.com> Date: Tue, 28 Dec 2021 21:34:26 +0800 Subject: [PATCH] Java keywords cannot be used as package/class name --- buildSrc/src/main/java/Codegen.kt | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/buildSrc/src/main/java/Codegen.kt b/buildSrc/src/main/java/Codegen.kt index 2d806fe78..d0116b502 100644 --- a/buildSrc/src/main/java/Codegen.kt +++ b/buildSrc/src/main/java/Codegen.kt @@ -194,7 +194,23 @@ fun genStubManifest(srcDir: File, outDir: File): String { val pkgNames = names.distinctBy { it.toLowerCase(Locale.ROOT) } var idx = 0 - fun genCmpName() = "${pkgNames[idx++]}.${names.random(kRANDOM)}" + fun isJavaKeyword(name: String) = when (name) { + "do", "if", "for", "int", "new", "try" -> true + else -> false + } + + fun genCmpName() : String { + var pkgName : String + do { + pkgName = pkgNames[idx++] + } while (isJavaKeyword(pkgName)) + + var clzName : String + do { + clzName = names.random(kRANDOM) + } while (isJavaKeyword(clzName)) + return "${pkgName}.${clzName}" + } fun genClass(clzName: String, type: String) { val (pkg, name) = clzName.split('.')