bind: fix generated JNI name for Go packages with underscores
Fixes golang/go#27669
Change-Id: Id4071e14fe2a35b2b54801af9d0161f08f3e9e9c
Reviewed-on: https://go-review.googlesource.com/135755
Reviewed-by: Hyang-Ah Hana Kim <hyangah@gmail.com>
diff --git a/bind/genjava.go b/bind/genjava.go
index 633f9aa..03ce9a1 100644
--- a/bind/genjava.go
+++ b/bind/genjava.go
@@ -735,14 +735,14 @@
g.Printf("Java_%s_", g.jniPkgName())
if sName != "" {
if proxy {
- g.Printf(g.className())
+ g.Printf(java.JNIMangle(g.className()))
// 0024 is the mangled form of $, for naming inner classes.
g.Printf("_00024proxy%s", sName)
} else {
g.Printf(java.JNIMangle(g.javaTypeName(sName)))
}
} else {
- g.Printf(g.className())
+ g.Printf(java.JNIMangle(g.className()))
}
g.Printf("_")
if jm != nil {
@@ -1091,7 +1091,7 @@
n := java.JNIMangle(g.javaTypeName(o.Name()))
// setter
g.Printf("JNIEXPORT void JNICALL\n")
- g.Printf("Java_%s_%s_set%s(JNIEnv *env, jclass clazz, %s v) {\n", g.jniPkgName(), g.className(), n, g.jniType(o.Type()))
+ g.Printf("Java_%s_%s_set%s(JNIEnv *env, jclass clazz, %s v) {\n", g.jniPkgName(), java.JNIMangle(g.className()), n, g.jniType(o.Type()))
g.Indent()
g.genJavaToC("v", o.Type(), modeRetained)
g.Printf("var_set%s_%s(_v);\n", g.pkgPrefix, o.Name())
@@ -1101,7 +1101,7 @@
// getter
g.Printf("JNIEXPORT %s JNICALL\n", g.jniType(o.Type()))
- g.Printf("Java_%s_%s_get%s(JNIEnv *env, jclass clazz) {\n", g.jniPkgName(), g.className(), n)
+ g.Printf("Java_%s_%s_get%s(JNIEnv *env, jclass clazz) {\n", g.jniPkgName(), java.JNIMangle(g.className()), n)
g.Indent()
g.Printf("%s r0 = ", g.cgoType(o.Type()))
g.Printf("var_get%s_%s();\n", g.pkgPrefix, o.Name())
diff --git a/bind/testdata/underscores.java.c.golden b/bind/testdata/underscores.java.c.golden
index c617f01..f4f60a1 100644
--- a/bind/testdata/underscores.java.c.golden
+++ b/bind/testdata/underscores.java.c.golden
@@ -21,7 +21,7 @@
}
JNIEXPORT void JNICALL
-Java_underscore_1pkg_Underscore_pkg_underscore_1func(JNIEnv* env, jclass _clazz) {
+Java_underscore_1pkg_Underscore_1pkg_underscore_1func(JNIEnv* env, jclass _clazz) {
proxyunderscore_pkg__Underscore_func();
}
@@ -46,13 +46,13 @@
}
JNIEXPORT void JNICALL
-Java_underscore_1pkg_Underscore_pkg_setUnderscore_1var(JNIEnv *env, jclass clazz, jlong v) {
+Java_underscore_1pkg_Underscore_1pkg_setUnderscore_1var(JNIEnv *env, jclass clazz, jlong v) {
nint _v = (nint)v;
var_setunderscore_pkg_Underscore_var(_v);
}
JNIEXPORT jlong JNICALL
-Java_underscore_1pkg_Underscore_pkg_getUnderscore_1var(JNIEnv *env, jclass clazz) {
+Java_underscore_1pkg_Underscore_1pkg_getUnderscore_1var(JNIEnv *env, jclass clazz) {
nint r0 = var_getunderscore_pkg_Underscore_var();
jlong _r0 = (jlong)r0;
return _r0;