compiler: fix bug in for range loop over a named map type
Этот коммит содержится в:
родитель
9bddaae04a
коммит
6292a0fd2e
1 изменённых файлов: 2 добавлений и 2 удалений
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
Загрузка…
Создание таблицы
Сослаться в новой задаче