Source file test/fixedbugs/issue37837.dir/a.go

     1  // Copyright 2020 The Go Authors. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  package a
     6  
     7  func F(i interface{}) int { // ERROR "can inline F" "i does not escape"
     8  	switch i.(type) {
     9  	case nil:
    10  		return 0
    11  	case int:
    12  		return 1
    13  	case float64:
    14  		return 2
    15  	default:
    16  		return 3
    17  	}
    18  }
    19  
    20  func G(i interface{}) interface{} { // ERROR "can inline G" "leaking param: i"
    21  	switch i := i.(type) {
    22  	case nil: // ERROR "moved to heap: i"
    23  		return &i
    24  	case int: // ERROR "moved to heap: i"
    25  		return &i
    26  	case float64: // ERROR "moved to heap: i"
    27  		return &i
    28  	case string, []byte: // ERROR "moved to heap: i"
    29  		return &i
    30  	default: // ERROR "moved to heap: i"
    31  		return &i
    32  	}
    33  }
    34  

View as plain text