forked from cerc-io/plugeth
rlp/rlpgen: remove build tag (#28106)
* rlp/rlpgen: remove build tag This tag was supposed to prevent unstable output when types reference each other. Imagine there are two struct types A and B, where a reference to type B is in A. If I run rlpgen on type B first, and then on type A, the generator will see the B.EncodeRLP method and call it. However, if I run rlpgen on type A first, it will inline the encoding of B. The solution I chose for the initial release of rlpgen was to just ignore methods generated by rlpgen using a build tag. But there is a problem with this: if any code in the package calls EncodeRLP explicitly, the package can't be loaded without errors anymore in rlpgen, because the loader ignores it. Would be nice if there was a way to just make it ignore invalid functions during type checking (they're not necessary for rlpgen), but golang.org/x/tools/go/packages does not provide a way of ignoring them. Luckily, the types we use rlpgen with do not reference each other right now, so we can just remove the build tags for now.
This commit is contained in:
parent
ee654626ad
commit
909dd4a109
@ -1,8 +1,5 @@
|
|||||||
// Code generated by rlpgen. DO NOT EDIT.
|
// Code generated by rlpgen. DO NOT EDIT.
|
||||||
|
|
||||||
//go:build !norlpgen
|
|
||||||
// +build !norlpgen
|
|
||||||
|
|
||||||
package types
|
package types
|
||||||
|
|
||||||
import "github.com/ethereum/go-ethereum/rlp"
|
import "github.com/ethereum/go-ethereum/rlp"
|
||||||
|
@ -1,8 +1,5 @@
|
|||||||
// Code generated by rlpgen. DO NOT EDIT.
|
// Code generated by rlpgen. DO NOT EDIT.
|
||||||
|
|
||||||
//go:build !norlpgen
|
|
||||||
// +build !norlpgen
|
|
||||||
|
|
||||||
package types
|
package types
|
||||||
|
|
||||||
import "github.com/ethereum/go-ethereum/rlp"
|
import "github.com/ethereum/go-ethereum/rlp"
|
||||||
|
@ -1,8 +1,5 @@
|
|||||||
// Code generated by rlpgen. DO NOT EDIT.
|
// Code generated by rlpgen. DO NOT EDIT.
|
||||||
|
|
||||||
//go:build !norlpgen
|
|
||||||
// +build !norlpgen
|
|
||||||
|
|
||||||
package types
|
package types
|
||||||
|
|
||||||
import "github.com/ethereum/go-ethereum/rlp"
|
import "github.com/ethereum/go-ethereum/rlp"
|
||||||
|
@ -1,8 +1,5 @@
|
|||||||
// Code generated by rlpgen. DO NOT EDIT.
|
// Code generated by rlpgen. DO NOT EDIT.
|
||||||
|
|
||||||
//go:build !norlpgen
|
|
||||||
// +build !norlpgen
|
|
||||||
|
|
||||||
package types
|
package types
|
||||||
|
|
||||||
import "github.com/ethereum/go-ethereum/rlp"
|
import "github.com/ethereum/go-ethereum/rlp"
|
||||||
|
@ -73,9 +73,8 @@ type Config struct {
|
|||||||
func (cfg *Config) process() (code []byte, err error) {
|
func (cfg *Config) process() (code []byte, err error) {
|
||||||
// Load packages.
|
// Load packages.
|
||||||
pcfg := &packages.Config{
|
pcfg := &packages.Config{
|
||||||
Mode: packages.NeedName | packages.NeedTypes | packages.NeedImports | packages.NeedDeps,
|
Mode: packages.NeedName | packages.NeedTypes,
|
||||||
Dir: cfg.Dir,
|
Dir: cfg.Dir,
|
||||||
BuildFlags: []string{"-tags", "norlpgen"},
|
|
||||||
}
|
}
|
||||||
ps, err := packages.Load(pcfg, pathOfPackageRLP, ".")
|
ps, err := packages.Load(pcfg, pathOfPackageRLP, ".")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -117,8 +116,6 @@ func (cfg *Config) process() (code []byte, err error) {
|
|||||||
// This is done here to avoid processing these lines with gofmt.
|
// This is done here to avoid processing these lines with gofmt.
|
||||||
var header bytes.Buffer
|
var header bytes.Buffer
|
||||||
fmt.Fprint(&header, "// Code generated by rlpgen. DO NOT EDIT.\n\n")
|
fmt.Fprint(&header, "// Code generated by rlpgen. DO NOT EDIT.\n\n")
|
||||||
fmt.Fprint(&header, "//go:build !norlpgen\n")
|
|
||||||
fmt.Fprint(&header, "// +build !norlpgen\n\n")
|
|
||||||
return append(header.Bytes(), code...), nil
|
return append(header.Bytes(), code...), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user