From 1170cdc21fec5f93568adf75b58b22ace09020ff Mon Sep 17 00:00:00 2001 From: Ayke van Laethem Date: Sun, 2 Sep 2018 21:14:33 +0200 Subject: [PATCH] compiler: implement Field expression This expression is used when calling a method on an embedded type in a struct. --- compiler.go | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/compiler.go b/compiler.go index 4108b1a9..e8d71c0a 100644 --- a/compiler.go +++ b/compiler.go @@ -1708,6 +1708,13 @@ func (c *Compiler) parseExpr(frame *Frame, expr ssa.Value) (llvm.Value, error) { } result := c.builder.CreateExtractValue(value, expr.Index, "") return result, nil + case *ssa.Field: + value, err := c.parseExpr(frame, expr.X) + if err != nil { + return llvm.Value{}, err + } + result := c.builder.CreateExtractValue(value, expr.Field, "") + return result, nil case *ssa.FieldAddr: val, err := c.parseExpr(frame, expr.X) if err != nil {