forked from cerc-io/ipld-eth-server
36533f7c3f
Fixes for new geth version
43 lines
836 B
Go
43 lines
836 B
Go
package pass
|
|
|
|
import (
|
|
"github.com/mmcloughlin/avo/attr"
|
|
"github.com/mmcloughlin/avo/ir"
|
|
)
|
|
|
|
// IncludeTextFlagHeader includes textflag.h if necessary.
|
|
func IncludeTextFlagHeader(f *ir.File) error {
|
|
const textflagheader = "textflag.h"
|
|
|
|
// Check if we already have it.
|
|
for _, path := range f.Includes {
|
|
if path == textflagheader {
|
|
return nil
|
|
}
|
|
}
|
|
|
|
// Add it if necessary.
|
|
if requirestextflags(f) {
|
|
f.Includes = append(f.Includes, textflagheader)
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
// requirestextflags returns whether the file uses flags in the textflags.h header.
|
|
func requirestextflags(f *ir.File) bool {
|
|
for _, s := range f.Sections {
|
|
var a attr.Attribute
|
|
switch s := s.(type) {
|
|
case *ir.Function:
|
|
a = s.Attributes
|
|
case *ir.Global:
|
|
a = s.Attributes
|
|
}
|
|
if a.ContainsTextFlags() {
|
|
return true
|
|
}
|
|
}
|
|
return false
|
|
}
|