func()

in tools/go-agent/cmd/injector.go [187:216]


func (i *projectInjector) addingProjectImportInFileAndRewrite(f *dst.File) bool {
	var latestImportDel *dst.GenDecl
	var existingImport bool
	for _, decl := range f.Decls {
		if gen, ok := decl.(*dst.GenDecl); ok && gen != nil && gen.Tok == token.IMPORT {
			latestImportDel = gen
			if !existingImport && i.containsImport(gen) {
				existingImport = true
			}
		}
	}
	if existingImport {
		return true
	}
	if latestImportDel == nil {
		latestImportDel = &dst.GenDecl{
			Tok:   token.IMPORT,
			Specs: []dst.Spec{},
		}
		f.Decls = append([]dst.Decl{latestImportDel}, f.Decls...)
	}
	latestImportDel.Specs = append(latestImportDel.Specs, &dst.ImportSpec{
		Name: dst.NewIdent("_"),
		Path: &dst.BasicLit{
			Kind:  token.STRING,
			Value: fmt.Sprintf("%q", projectBaseImportPath),
		},
	})
	return false
}