summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/d5/tengo/compiler/source/file_set.go
diff options
context:
space:
mode:
authorWim <wim@42.be>2020-01-09 21:52:19 +0100
committerGitHub <noreply@github.com>2020-01-09 21:52:19 +0100
commit9d84d6dd643c4017074e81465671cd9b25f9539a (patch)
tree8a767f91d655a6cf21d476e4fb7aa6fd8a952df8 /vendor/github.com/d5/tengo/compiler/source/file_set.go
parent0f708daf2d14dcca261ef98cc698a1b1f2a6aa74 (diff)
downloadmatterbridge-msglm-9d84d6dd643c4017074e81465671cd9b25f9539a.tar.gz
matterbridge-msglm-9d84d6dd643c4017074e81465671cd9b25f9539a.tar.bz2
matterbridge-msglm-9d84d6dd643c4017074e81465671cd9b25f9539a.zip
Update to tengo v2 (#976)
Diffstat (limited to 'vendor/github.com/d5/tengo/compiler/source/file_set.go')
-rw-r--r--vendor/github.com/d5/tengo/compiler/source/file_set.go96
1 files changed, 0 insertions, 96 deletions
diff --git a/vendor/github.com/d5/tengo/compiler/source/file_set.go b/vendor/github.com/d5/tengo/compiler/source/file_set.go
deleted file mode 100644
index da342364..00000000
--- a/vendor/github.com/d5/tengo/compiler/source/file_set.go
+++ /dev/null
@@ -1,96 +0,0 @@
-package source
-
-import (
- "sort"
-)
-
-// FileSet represents a set of source files.
-type FileSet struct {
- Base int // base offset for the next file
- Files []*File // list of files in the order added to the set
- LastFile *File // cache of last file looked up
-}
-
-// NewFileSet creates a new file set.
-func NewFileSet() *FileSet {
- return &FileSet{
- Base: 1, // 0 == NoPos
- }
-}
-
-// AddFile adds a new file in the file set.
-func (s *FileSet) AddFile(filename string, base, size int) *File {
- if base < 0 {
- base = s.Base
- }
- if base < s.Base || size < 0 {
- panic("illegal base or size")
- }
-
- f := &File{
- set: s,
- Name: filename,
- Base: base,
- Size: size,
- Lines: []int{0},
- }
-
- base += size + 1 // +1 because EOF also has a position
- if base < 0 {
- panic("offset overflow (> 2G of source code in file set)")
- }
-
- // add the file to the file set
- s.Base = base
- s.Files = append(s.Files, f)
- s.LastFile = f
-
- return f
-}
-
-// File returns the file that contains the position p.
-// If no such file is found (for instance for p == NoPos),
-// the result is nil.
-//
-func (s *FileSet) File(p Pos) (f *File) {
- if p != NoPos {
- f = s.file(p)
- }
-
- return
-}
-
-// Position converts a Pos p in the fileset into a FilePos value.
-func (s *FileSet) Position(p Pos) (pos FilePos) {
- if p != NoPos {
- if f := s.file(p); f != nil {
- return f.position(p)
- }
- }
-
- return
-}
-
-func (s *FileSet) file(p Pos) *File {
- // common case: p is in last file
- if f := s.LastFile; f != nil && f.Base <= int(p) && int(p) <= f.Base+f.Size {
- return f
- }
-
- // p is not in last file - search all files
- if i := searchFiles(s.Files, int(p)); i >= 0 {
- f := s.Files[i]
-
- // f.base <= int(p) by definition of searchFiles
- if int(p) <= f.Base+f.Size {
- s.LastFile = f // race is ok - s.last is only a cache
- return f
- }
- }
-
- return nil
-}
-
-func searchFiles(a []*File, x int) int {
- return sort.Search(len(a), func(i int) bool { return a[i].Base > x }) - 1
-}