@@ -7,6 +7,7 @@ package bind
7
7
import (
8
8
"fmt"
9
9
"go/constant"
10
+ "go/token"
10
11
"go/types"
11
12
"html"
12
13
"math"
@@ -295,7 +296,7 @@ func (g *JavaGen) genStruct(s structInfo) {
295
296
cons := g .constructors [s .obj ]
296
297
for _ , f := range cons {
297
298
if ! g .isConsSigSupported (f .Type ()) {
298
- g .Printf ( "// skipped constructor %s.%s with unsupported parameter or return types\n \n " , n , f .Name ())
299
+ g .warnf ( f . Pos (), " skipped constructor %s.%s with unsupported parameter or return types" , n , f .Name ())
299
300
continue
300
301
}
301
302
g .genConstructor (f , n , jinf != nil )
@@ -312,7 +313,7 @@ func (g *JavaGen) genStruct(s structInfo) {
312
313
313
314
for _ , f := range fields {
314
315
if t := f .Type (); ! g .isSupported (t ) {
315
- g .Printf ( "// skipped field %s.%s with unsupported type: %s\n \n " , n , f .Name (), t )
316
+ g .warnf ( f . Pos (), " skipped field %s.%s with unsupported type: %s" , n , f .Name (), t )
316
317
continue
317
318
}
318
319
@@ -326,7 +327,7 @@ func (g *JavaGen) genStruct(s structInfo) {
326
327
var isStringer bool
327
328
for _ , m := range methods {
328
329
if ! g .isSigSupported (m .Type ()) {
329
- g .Printf ( "// skipped method %s.%s with unsupported parameter or return types\n \n " , n , m .Name ())
330
+ g .warnf ( m . Pos (), " skipped method %s.%s with unsupported parameter or return types" , n , m .Name ())
330
331
continue
331
332
}
332
333
g .javadoc (doc .Member (m .Name ()))
@@ -487,7 +488,7 @@ func (g *JavaGen) genObjectMethods(n string, fields []*types.Var, isStringer boo
487
488
g .Printf ("%s that = (%s)o;\n " , n , n )
488
489
for _ , f := range fields {
489
490
if t := f .Type (); ! g .isSupported (t ) {
490
- g .Printf ( "// skipped field %s.%s with unsupported type: %s\n \n " , n , f .Name (), t )
491
+ g .warnf ( f . Pos (), " skipped field %s.%s with unsupported type: %s" , n , f .Name (), t )
491
492
continue
492
493
}
493
494
nf := f .Name ()
@@ -581,7 +582,7 @@ func (g *JavaGen) genInterface(iface interfaceInfo) {
581
582
582
583
for _ , m := range iface .summary .callable {
583
584
if ! g .isSigSupported (m .Type ()) {
584
- g .Printf ( "// skipped method %s.%s with unsupported parameter or return types\n \n " , iface .obj .Name (), m .Name ())
585
+ g .warnf ( m . Pos (), " skipped method %s.%s with unsupported parameter or return types" , iface .obj .Name (), m .Name ())
585
586
continue
586
587
}
587
588
g .javadoc (doc .Member (m .Name ()))
@@ -862,7 +863,7 @@ func (g *JavaGen) genFuncSignature(o *types.Func, jm *java.Func, hasThis bool) {
862
863
863
864
func (g * JavaGen ) genVar (o * types.Var ) {
864
865
if t := o .Type (); ! g .isSupported (t ) {
865
- g .Printf ( "// skipped variable %s with unsupported type: %s\n \n " , o .Name (), t )
866
+ g .warnf ( o . Pos (), " skipped variable %s with unsupported type: %s" , o .Name (), t )
866
867
return
867
868
}
868
869
jType := g .javaType (o .Type ())
@@ -1043,7 +1044,7 @@ func JavaClassName(pkg *types.Package) string {
1043
1044
1044
1045
func (g * JavaGen ) genConst (o * types.Const ) {
1045
1046
if _ , ok := o .Type ().(* types.Basic ); ! ok || ! g .isSupported (o .Type ()) {
1046
- g .Printf ( "// skipped const %s with unsupported type: %s\n \n " , o .Name (), o .Type ())
1047
+ g .warnf ( o . Pos (), " skipped const %s with unsupported type: %s" , o .Name (), o .Type ())
1047
1048
return
1048
1049
}
1049
1050
// TODO(hyangah): should const names use upper cases + "_"?
@@ -1077,7 +1078,7 @@ func (g *JavaGen) genConst(o *types.Const) {
1077
1078
1078
1079
func (g * JavaGen ) genJNIField (o * types.TypeName , f * types.Var ) {
1079
1080
if t := f .Type (); ! g .isSupported (t ) {
1080
- g .Printf ( "// skipped field %s with unsupported type: %s\n \n " , o .Name (), t )
1081
+ g .warnf ( f . Pos (), " skipped field %s with unsupported type: %s" , o .Name (), t )
1081
1082
return
1082
1083
}
1083
1084
n := java .JNIMangle (g .javaTypeName (o .Name ()))
@@ -1107,7 +1108,7 @@ func (g *JavaGen) genJNIField(o *types.TypeName, f *types.Var) {
1107
1108
1108
1109
func (g * JavaGen ) genJNIVar (o * types.Var ) {
1109
1110
if t := o .Type (); ! g .isSupported (t ) {
1110
- g .Printf ( "// skipped variable %s with unsupported type: %s\n \n " , o .Name (), t )
1111
+ g .warnf ( o . Pos (), " skipped variable %s with unsupported type: %s" , o .Name (), t )
1111
1112
return
1112
1113
}
1113
1114
n := java .JNIMangle (g .javaTypeName (o .Name ()))
@@ -1187,7 +1188,7 @@ func (g *JavaGen) genJNIFunc(o *types.Func, sName string, jm *java.Func, proxy,
1187
1188
if sName != "" {
1188
1189
n = sName + "." + n
1189
1190
}
1190
- g .Printf ( "// skipped function %s with unsupported parameter or return types\n \n " , n )
1191
+ g .warnf ( o . Pos (), " skipped function %s with unsupported parameter or return types" , n )
1191
1192
return
1192
1193
}
1193
1194
g .genJNIFuncSignature (o , sName , jm , proxy , isjava )
@@ -1276,7 +1277,7 @@ func (g *JavaGen) genRelease(varName string, t types.Type, mode varMode) {
1276
1277
1277
1278
func (g * JavaGen ) genMethodInterfaceProxy (oName string , m * types.Func ) {
1278
1279
if ! g .isSigSupported (m .Type ()) {
1279
- g .Printf ( "// skipped method %s with unsupported parameter or return types\n \n " , oName )
1280
+ g .warnf ( m . Pos (), " skipped method %s with unsupported parameter or return types" , oName )
1280
1281
return
1281
1282
}
1282
1283
sig := m .Type ().(* types.Signature )
@@ -1345,7 +1346,7 @@ func (g *JavaGen) GenH() error {
1345
1346
g .Printf ("\n " )
1346
1347
for _ , m := range iface .summary .callable {
1347
1348
if ! g .isSigSupported (m .Type ()) {
1348
- g .Printf ( "// skipped method %s.%s with unsupported parameter or return types\n \n " , iface .obj .Name (), m .Name ())
1349
+ g .warnf ( m . Pos (), " skipped method %s.%s with unsupported parameter or return types" , iface .obj .Name (), m .Name ())
1349
1350
continue
1350
1351
}
1351
1352
g .genInterfaceMethodSignature (m , iface .obj .Name (), true , g .paramName )
@@ -1477,7 +1478,7 @@ func (g *JavaGen) GenC() error {
1477
1478
g .Printf ("jmethodID proxy_class_%s_%s_cons;\n " , g .pkgPrefix , iface .obj .Name ())
1478
1479
for _ , m := range iface .summary .callable {
1479
1480
if ! g .isSigSupported (m .Type ()) {
1480
- g .Printf ( "// skipped method %s.%s with unsupported parameter or return types\n \n " , iface .obj .Name (), m .Name ())
1481
+ g .warnf ( m . Pos (), " skipped method %s.%s with unsupported parameter or return types" , iface .obj .Name (), m .Name ())
1481
1482
continue
1482
1483
}
1483
1484
g .Printf ("static jmethodID mid_%s_%s;\n " , iface .obj .Name (), m .Name ())
@@ -1519,7 +1520,7 @@ func (g *JavaGen) GenC() error {
1519
1520
g .Printf ("clazz = (*env)->FindClass(env, %q);\n " , g .jniClassSigPrefix (pkg )+ g .javaTypeName (iface .obj .Name ()))
1520
1521
for _ , m := range iface .summary .callable {
1521
1522
if ! g .isSigSupported (m .Type ()) {
1522
- g .Printf ( "// skipped method %s.%s with unsupported parameter or return types\n \n " , iface .obj .Name (), m .Name ())
1523
+ g .warnf ( m . Pos (), " skipped method %s.%s with unsupported parameter or return types" , iface .obj .Name (), m .Name ())
1523
1524
continue
1524
1525
}
1525
1526
sig := m .Type ().(* types.Signature )
@@ -1630,7 +1631,7 @@ func (g *JavaGen) GenJava() error {
1630
1631
}
1631
1632
for _ , m := range iface .summary .callable {
1632
1633
if ! g .isSigSupported (m .Type ()) {
1633
- g .Printf ( "// skipped method %s.%s with unsupported parameter or return types\n \n " , n , m .Name ())
1634
+ g .warnf ( m . Pos (), " skipped method %s.%s with unsupported parameter or return types" , n , m .Name ())
1634
1635
continue
1635
1636
}
1636
1637
g .Printf ("public native " )
@@ -1652,7 +1653,7 @@ func (g *JavaGen) GenJava() error {
1652
1653
}
1653
1654
for _ , f := range g .funcs {
1654
1655
if ! g .isSigSupported (f .Type ()) {
1655
- g .Printf ( "// skipped function %s with unsupported parameter or return types\n \n " , f .Name ())
1656
+ g .warnf ( f . Pos (), " skipped function %s with unsupported parameter or return types" , f .Name ())
1656
1657
continue
1657
1658
}
1658
1659
g .javadoc (g .docs [f .Name ()].Doc ())
@@ -1669,6 +1670,14 @@ func (g *JavaGen) GenJava() error {
1669
1670
return nil
1670
1671
}
1671
1672
1673
+ func (g * JavaGen ) warnf (pos token.Pos , format string , args ... interface {}) {
1674
+ if g .Reporter != nil {
1675
+ fpos := g .Fset .Position (pos )
1676
+ g .Reporter .Message (fmt .Sprintf (fpos .String ()+ ": " + format , args ... ))
1677
+ }
1678
+ g .Printf ("// " + format + "\n \n " , args ... )
1679
+ }
1680
+
1672
1681
// embeddedJavaClasses returns the possible empty list of Java types embedded
1673
1682
// in the given struct type.
1674
1683
func embeddedJavaClasses (t * types.Struct ) []string {
0 commit comments