| // Copyright 2017 The Go Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style | |
| // license that can be found in the LICENSE file. | |
| package main | |
| import ( | |
| "go/ast" | |
| ) | |
| func init() { | |
| register(jniFix) | |
| } | |
| var jniFix = fix{ | |
| name: "jni", | |
| date: "2017-12-04", | |
| f: jnifix, | |
| desc: `Fixes initializers of JNI's jobject and subtypes`, | |
| disabled: false, | |
| } | |
| // Old state: | |
| // type jobject *_jobject | |
| // New state: | |
| // type jobject uintptr | |
| // and similar for subtypes of jobject. | |
| // This fix finds nils initializing these types and replaces the nils with 0s. | |
| func jnifix(f *ast.File) bool { | |
| return typefix(f, func(s string) bool { | |
| switch s { | |
| case "C.jobject": | |
| return true | |
| case "C.jclass": | |
| return true | |
| case "C.jthrowable": | |
| return true | |
| case "C.jstring": | |
| return true | |
| case "C.jarray": | |
| return true | |
| case "C.jbooleanArray": | |
| return true | |
| case "C.jbyteArray": | |
| return true | |
| case "C.jcharArray": | |
| return true | |
| case "C.jshortArray": | |
| return true | |
| case "C.jintArray": | |
| return true | |
| case "C.jlongArray": | |
| return true | |
| case "C.jfloatArray": | |
| return true | |
| case "C.jdoubleArray": | |
| return true | |
| case "C.jobjectArray": | |
| return true | |
| case "C.jweak": | |
| return true | |
| } | |
| return false | |
| }) | |
| } |