@@ -3,6 +3,7 @@ package filtertest
3
3
import (
4
4
"errors"
5
5
"fmt"
6
+ "io"
6
7
"os"
7
8
"time"
8
9
"unsafe"
@@ -406,6 +407,80 @@ func detectType() {
406
407
typeTest (float64 (5.3 ), "is uint" )
407
408
typeTest (float32 (5.3 ), "is uint" )
408
409
}
410
+
411
+ {
412
+ const untypedStr = "123"
413
+ type myString string
414
+
415
+ type scalarObject struct {
416
+ x int
417
+ y int
418
+ }
419
+
420
+ type withPointers struct {
421
+ x int
422
+ y * int
423
+ }
424
+
425
+ var intarr [4 ]int
426
+ var intptrarr [4 ]* int
427
+ var r io.Reader
428
+ var ch chan int
429
+
430
+ typeTest (1 , "pointer-free" ) // want `true`
431
+ typeTest (1.6 , "pointer-free" ) // want `true`
432
+ typeTest (true , "pointer-free" ) // want `true`
433
+ typeTest (scalarObject {1 , 2 }, "pointer-free" ) // want `true`
434
+ typeTest (intarr , "pointer-free" ) // want `true`
435
+ typeTest ([2 ]scalarObject {}, "pointer-free" ) // want `true`
436
+
437
+ typeTest (withPointers {}, "pointer-free" )
438
+ typeTest (& withPointers {}, "pointer-free" )
439
+ typeTest (ch , "pointer-free" )
440
+ typeTest (r , "pointer-free" )
441
+ typeTest (& r , "pointer-free" )
442
+ typeTest (& intarr , "pointer-free" )
443
+ typeTest (intptrarr , "pointer-free" )
444
+ typeTest (& intptrarr , "pointer-free" )
445
+ typeTest (& scalarObject {1 , 2 }, "pointer-free" )
446
+ typeTest ("str" , "pointer-free" )
447
+ typeTest (untypedStr , "pointer-free" )
448
+ typeTest (myString ("123" ), "pointer-free" )
449
+ typeTest (unsafe .Pointer (nil ), "pointer-free" )
450
+ typeTest (nil , "pointer-free" )
451
+ typeTest ([]int {1 }, "pointer-free" )
452
+ typeTest ([]string {"" }, "pointer-free" )
453
+ typeTest (map [string ]string {}, "pointer-free" )
454
+ typeTest (new (int ), "pointer-free" )
455
+ typeTest (new (string ), "pointer-free" )
456
+
457
+ typeTest (1 , "has pointers" )
458
+ typeTest (1.6 , "has pointers" )
459
+ typeTest (true , "has pointers" )
460
+ typeTest (scalarObject {1 , 2 }, "has pointers" )
461
+ typeTest (intarr , "has pointers" )
462
+ typeTest ([2 ]scalarObject {}, "has pointers" )
463
+
464
+ typeTest (withPointers {}, "has pointers" ) // want `true`
465
+ typeTest (& withPointers {}, "has pointers" ) // want `true`
466
+ typeTest (ch , "has pointers" ) // want `true`
467
+ typeTest (r , "has pointers" ) // want `true`
468
+ typeTest (& r , "has pointers" ) // want `true`
469
+ typeTest (& intarr , "has pointers" ) // want `true`
470
+ typeTest (intptrarr , "has pointers" ) // want `true`
471
+ typeTest (& intptrarr , "has pointers" ) // want `true`
472
+ typeTest (& scalarObject {1 , 2 }, "has pointers" ) // want `true`
473
+ typeTest ("str" , "has pointers" ) // want `true`
474
+ typeTest (untypedStr , "has pointers" ) // want `true`
475
+ typeTest (myString ("123" ), "has pointers" ) // want `true`
476
+ typeTest (unsafe .Pointer (nil ), "has pointers" ) // want `true`
477
+ typeTest (nil , "has pointers" ) // want `true`
478
+ typeTest ([]int {1 }, "has pointers" ) // want `true`
479
+ typeTest ([]string {"" }, "has pointers" ) // want `true`
480
+ typeTest (map [string ]string {}, "has pointers" ) // want `true`
481
+ typeTest (new (int ), "has pointers" ) // want `true`
482
+ typeTest (new (string ), "has pointers" ) // want `true`
483
+ }
409
484
}
410
485
411
486
func detectAddressable (x int , xs []int ) {
0 commit comments