push a recovery expression with its labels to the recoveryStack
(labels []string, expr any)
| 24894 | |
| 24895 | // push a recovery expression with its labels to the recoveryStack |
| 24896 | func (p *parser) pushRecovery(labels []string, expr any) { |
| 24897 | if cap(p.recoveryStack) == len(p.recoveryStack) { |
| 24898 | // create new empty slot in the stack |
| 24899 | p.recoveryStack = append(p.recoveryStack, nil) |
| 24900 | } else { |
| 24901 | // slice to 1 more |
| 24902 | p.recoveryStack = p.recoveryStack[:len(p.recoveryStack)+1] |
| 24903 | } |
| 24904 | |
| 24905 | m := make(map[string]any, len(labels)) |
| 24906 | for _, fl := range labels { |
| 24907 | m[fl] = expr |
| 24908 | } |
| 24909 | p.recoveryStack[len(p.recoveryStack)-1] = m |
| 24910 | } |
| 24911 | |
| 24912 | // pop a recovery expression from the recoveryStack |
| 24913 | func (p *parser) popRecovery() { |