compiler: fix bug in for range loop over a named map type

This commit is contained in:
Ayke van Laethem
2018-11-14 15:43:50 +01:00
parent 9bddaae04a
commit 6292a0fd2e
+2 -2
View File
@@ -2450,11 +2450,11 @@ func (c *Compiler) parseExpr(frame *Frame, expr ssa.Value) (llvm.Value, error) {
if expr.IsString { if expr.IsString {
return c.createRuntimeCall("stringNext", []llvm.Value{llvmRangeVal, it}, "range.next"), nil return c.createRuntimeCall("stringNext", []llvm.Value{llvmRangeVal, it}, "range.next"), nil
} else { // map } else { // map
llvmKeyType, err := c.getLLVMType(rangeVal.Type().(*types.Map).Key()) llvmKeyType, err := c.getLLVMType(rangeVal.Type().Underlying().(*types.Map).Key())
if err != nil { if err != nil {
return llvm.Value{}, err return llvm.Value{}, err
} }
llvmValueType, err := c.getLLVMType(rangeVal.Type().(*types.Map).Elem()) llvmValueType, err := c.getLLVMType(rangeVal.Type().Underlying().(*types.Map).Elem())
if err != nil { if err != nil {
return llvm.Value{}, err return llvm.Value{}, err
} }