mirror of
https://github.com/mgechev/revive.git
synced 2025-01-10 03:17:11 +02:00
87 lines
3.1 KiB
Go
87 lines
3.1 KiB
Go
// Test for redundant type declaration.
|
|
|
|
// Package foo ...
|
|
package foo
|
|
|
|
import (
|
|
"fmt"
|
|
"io"
|
|
"net/http"
|
|
"nosuchpkg" // export data unavailable
|
|
"os"
|
|
)
|
|
|
|
// Q is a test type.
|
|
type Q bool
|
|
|
|
var myInt int = 7 // MATCH /should omit type int from declaration of var myInt; it will be inferred from the right-hand side/
|
|
var mux *http.ServeMux = http.NewServeMux() // MATCH /should omit type *http.ServeMux from declaration of var mux; it will be inferred from the right-hand side/
|
|
|
|
var myZeroInt int = 0 // MATCH /should drop = 0 from declaration of var myZeroInt; it is the zero value/
|
|
var myZeroFlt float32 = 0. // MATCH /should drop = 0. from declaration of var myZeroFlt; it is the zero value/
|
|
var myZeroF64 float64 = 0.0 // MATCH /should drop = 0.0 from declaration of var myZeroF64; it is the zero value/
|
|
var myZeroImg complex64 = 0i // MATCH /should drop = 0i from declaration of var myZeroImg; it is the zero value/
|
|
var myZeroStr string = "" // MATCH /should drop = "" from declaration of var myZeroStr; it is the zero value/
|
|
var myZeroRaw string = `` // MATCH /should drop = `` from declaration of var myZeroRaw; it is the zero value/
|
|
var myZeroPtr *Q = nil // MATCH /should drop = nil from declaration of var myZeroPtr; it is the zero value/
|
|
var myZeroRune rune = '\x00' // MATCH /should drop = '\x00' from declaration of var myZeroRune; it is the zero value/
|
|
var myZeroRune2 rune = '\000' // MATCH /should drop = '\000' from declaration of var myZeroRune2; it is the zero value/
|
|
|
|
// No warning because there's no type on the LHS
|
|
var x = 0
|
|
|
|
// This shouldn't get a warning because there's no initial values.
|
|
var str fmt.Stringer
|
|
|
|
// No warning because this is a const.
|
|
const k uint64 = 7
|
|
|
|
const num = 123
|
|
|
|
// No warning because the var's RHS is known to be an untyped const.
|
|
var flags uint32 = num
|
|
|
|
// No warnings because the RHS is an ideal int, and the LHS is a different int type.
|
|
var userID int64 = 1235
|
|
var negID int64 = -1
|
|
var parenID int64 = (17)
|
|
var crazyID int64 = -(-(-(-9)))
|
|
|
|
// Same, but for strings and floats.
|
|
type stringT string
|
|
type floatT float64
|
|
|
|
var stringV stringT = "abc"
|
|
var floatV floatT = 123.45
|
|
|
|
// No warning because the LHS names an interface type.
|
|
var data interface{} = googleIPs
|
|
var googleIPs []int
|
|
|
|
// No warning because it's a common idiom for interface satisfaction.
|
|
var _ Server = (*serverImpl)(nil)
|
|
|
|
// Server is a test type.
|
|
type Server interface{}
|
|
type serverImpl struct{}
|
|
|
|
// LHS is a different type than the RHS.
|
|
var myStringer fmt.Stringer = q(0)
|
|
|
|
// LHS is a different type than the RHS.
|
|
var out io.Writer = os.Stdout
|
|
|
|
var out2 io.Writer = newWriter() // MATCH /should omit type io.Writer from declaration of var out2; it will be inferred from the right-hand side/
|
|
|
|
func newWriter() io.Writer { return nil }
|
|
|
|
// We don't figure out the true types of LHS and RHS here,
|
|
// so we suppress the check.
|
|
var ni nosuchpkg.Interface = nosuchpkg.NewConcrete()
|
|
|
|
var y string = q(1).String() // MATCH /should omit type string from declaration of var y; it will be inferred from the right-hand side/
|
|
|
|
type q int
|
|
|
|
func (q) String() string { return "I'm a q" }
|