MCPcopy Index your code
hub / github.com/maruel/panicparse / loadFile

Method loadFile

stack/source.go:60–90  ·  view source on GitHub ↗

loadFile loads a Go source file and parses the AST tree.

(fileName string)

Source from the content-addressed store, hash-verified

58
59// loadFile loads a Go source file and parses the AST tree.
60func (c *cacheAST) loadFile(fileName string) error {
61 if fileName == "" {
62 return nil
63 }
64 if _, ok := c.parsed[fileName]; ok {
65 return nil
66 }
67 // Do not attempt to parse the same file twice.
68 c.parsed[fileName] = nil
69
70 if !strings.HasSuffix(fileName, ".go") {
71 // Ignore C and assembly.
72 return fmt.Errorf("cannot load non-go file %q", fileName)
73 }
74 /* #nosec G304 */
75 src, err := os.ReadFile(fileName)
76 if err != nil {
77 return err
78 }
79 c.files[fileName] = src
80 fset := token.NewFileSet()
81 parsed, err := parser.ParseFile(fset, fileName, src, 0)
82 if err != nil {
83 return fmt.Errorf("failed to parse %w", err)
84 }
85 c.parsed[fileName] = &parsedFile{
86 lineToByteOffset: lineToByteOffsets(src),
87 parsed: parsed,
88 }
89 return nil
90}
91
92// lineToByteOffsets extract the line number into raw file offset.
93//

Callers 1

augmentGoroutineMethod · 0.95

Calls 1

lineToByteOffsetsFunction · 0.85

Tested by

no test coverage detected