src/src.bend checks
raw source on the hub · import 0x013e0f9a479bbebad5ed196725eede95/src/src.bend as Src
src/src: one file, read once and parsed once. A rule is handed this, not
the text: a tree parse of a 156 KB file costs 1.5 s here (the lexer alone
54 ms, and Bind.bound parses again), so twenty rules that each parsed
the text made the linter twenty times slower than it needs to be.
5 imports
import Base import ./syntax/lex.bend as Lex import ./syntax/tree.bend as Tree import ./syntax/bind.bend as Bind import ./syntax/outline.bend as Outline
Types
type Src source · line 12 · raw
Data
the path, the text, and the three readings of it every rule shares
Src@path:String -> @text:String -> @toks:List<&2, 0x013e0f9a479bbebad5ed196725eede95/src/syntax/lex.Tok> -> @tree:0x013e0f9a479bbebad5ed196725eede95/src/syntax/tree.Node -> @bound:0x013e0f9a479bbebad5ed196725eede95/src/syntax/bind.Bound -> @items:List<&2, 0x013e0f9a479bbebad5ed196725eede95/src/syntax/outline.Item> -> Src
Definitions
def of source · line 17 · raw
@+path:String -> @+text:String -> Src
read a file's text once