evaluateString converts a string expression to an SSA value.
(expr *expression.Expression)
| 8 | |
| 9 | // evaluateString converts a string expression to an SSA value. |
| 10 | func (f *Function) evaluateString(expr *expression.Expression) (ssa.Value, error) { |
| 11 | data, err := unescape(expr.Token, f.File) |
| 12 | |
| 13 | if err != nil { |
| 14 | return nil, err |
| 15 | } |
| 16 | |
| 17 | length := f.Append(&ssa.Int{ |
| 18 | Int: len(data), |
| 19 | Source: expr.Source(), |
| 20 | }) |
| 21 | |
| 22 | pointer := f.Append(&ssa.Bytes{ |
| 23 | Bytes: data, |
| 24 | Source: expr.Source(), |
| 25 | }) |
| 26 | |
| 27 | v := f.makeStruct(types.String, []ssa.Value{pointer, length}, expr.Source()) |
| 28 | return v, nil |
| 29 | } |
no test coverage detected