// _InvalidIfaceEmbed occurs when a non-interface type is embedded in an
// interface (for go 1.17 or earlier).
- _InvalidIfaceEmbed
+ _ // not used anymore
// _InvalidPtrEmbed occurs when an embedded field is of the pointer form *T,
// and T itself is itself a pointer, an unsafe.Pointer, or an interface.
// _InvalidUnsafeStringData occurs if it is used in a package
// compiled for a language version before go1.20.
- _InvalidUnsafeStringData
+ _ // not used anymore
)
switch {
case allInteger(y.typ):
if !allUnsigned(y.typ) && !check.allowVersion(check.pkg, 1, 13) {
- check.errorf(y, _InvalidShiftCount, invalidOp+"signed shift count %s requires go1.13 or later", y)
+ check.versionErrorf(y, "go1.13", invalidOp+"signed shift count %s", y)
x.mode = invalid
return
}
case _Add:
// unsafe.Add(ptr unsafe.Pointer, len IntegerType) unsafe.Pointer
if !check.allowVersion(check.pkg, 1, 17) {
- check.errorf(call.Fun, _InvalidUnsafeAdd, "unsafe.Add requires go1.17 or later")
+ check.errorf(call.Fun, _UnsupportedFeature, "unsafe.Add requires go1.17 or later")
return
}
case _Slice:
// unsafe.Slice(ptr *T, len IntegerType) []T
if !check.allowVersion(check.pkg, 1, 17) {
- check.errorf(call.Fun, _InvalidUnsafeSlice, "unsafe.Slice requires go1.17 or later")
+ check.errorf(call.Fun, _UnsupportedFeature, "unsafe.Slice requires go1.17 or later")
return
}
case _SliceData:
// unsafe.SliceData(slice []T) *T
if !check.allowVersion(check.pkg, 1, 20) {
- check.errorf(call.Fun, _InvalidUnsafeSliceData, "unsafe.SliceData requires go1.20 or later")
+ check.errorf(call.Fun, _UnsupportedFeature, "unsafe.SliceData requires go1.20 or later")
return
}
case _String:
// unsafe.String(ptr *byte, len IntegerType) string
if !check.allowVersion(check.pkg, 1, 20) {
- check.errorf(call.Fun, _InvalidUnsafeString, "unsafe.String requires go1.20 or later")
+ check.errorf(call.Fun, _UnsupportedFeature, "unsafe.String requires go1.20 or later")
return
}
case _StringData:
// unsafe.StringData(str string) *byte
if !check.allowVersion(check.pkg, 1, 20) {
- check.errorf(call.Fun, _InvalidUnsafeStringData, "unsafe.StringData requires go1.20 or later")
+ check.errorf(call.Fun, _UnsupportedFeature, "unsafe.StringData requires go1.20 or later")
return
}
// alias declaration
if alias {
if !check.allowVersion(check.pkg, 1, 9) {
- check.errorf(atPos(tdecl.Assign), _BadDecl, "type aliases requires go1.9 or later")
+ check.errorf(atPos(tdecl.Assign), _UnsupportedFeature, "type aliases requires go1.9 or later")
}
check.brokenAlias(obj)
// _InvalidIfaceEmbed occurs when a non-interface type is embedded in an
// interface (for go 1.17 or earlier).
- _InvalidIfaceEmbed
+ _ // not used anymore
// _InvalidPtrEmbed occurs when an embedded field is of the pointer form *T,
// and T itself is itself a pointer, an unsafe.Pointer, or an interface.
// _InvalidUnsafeStringData occurs if it is used in a package
// compiled for a language version before go1.20.
- _InvalidUnsafeStringData
+ _ // not used anymore
)
switch {
case allInteger(y.typ):
if !allUnsigned(y.typ) && !check.allowVersion(check.pkg, 1, 13) {
- check.invalidOp(y, _InvalidShiftCount, "signed shift count %s requires go1.13 or later", y)
+ check.invalidOp(y, _UnsupportedFeature, "signed shift count %s requires go1.13 or later", y)
x.mode = invalid
return
}
terms = tset.terms
case *Union:
if check != nil && !check.allowVersion(check.pkg, 1, 18) {
- check.errorf(atPos(pos), _InvalidIfaceEmbed, "embedding interface element %s requires go1.18 or later", u)
+ check.errorf(atPos(pos), _UnsupportedFeature, "embedding interface element %s requires go1.18 or later", u)
continue
}
tset := computeUnionTypeSet(check, unionSets, pos, u)
continue
}
if check != nil && !check.allowVersion(check.pkg, 1, 18) {
- check.errorf(atPos(pos), _InvalidIfaceEmbed, "embedding non-interface type %s requires go1.18 or later", typ)
+ check.errorf(atPos(pos), _UnsupportedFeature, "embedding non-interface type %s requires go1.18 or later", typ)
continue
}
terms = termlist{{false, typ}}
}
// len(s) > 2
if strings.Contains(s, "_") {
- check.errorf(lit, _InvalidLit, "underscores in numeric literals requires go1.13 or later")
+ check.errorf(lit, _UnsupportedFeature, "underscores in numeric literals requires go1.13 or later")
return
}
if s[0] != '0' {
}
radix := s[1]
if radix == 'b' || radix == 'B' {
- check.errorf(lit, _InvalidLit, "binary literals requires go1.13 or later")
+ check.errorf(lit, _UnsupportedFeature, "binary literals requires go1.13 or later")
return
}
if radix == 'o' || radix == 'O' {
- check.errorf(lit, _InvalidLit, "0o/0O-style octal literals requires go1.13 or later")
+ check.errorf(lit, _UnsupportedFeature, "0o/0O-style octal literals requires go1.13 or later")
return
}
if lit.Kind != token.INT && (radix == 'x' || radix == 'X') {
- check.errorf(lit, _InvalidLit, "hexadecimal floating-point literals requires go1.13 or later")
+ check.errorf(lit, _UnsupportedFeature, "hexadecimal floating-point literals requires go1.13 or later")
}
}