(t *assignmentTarget, e exprDesc)
| 974 | } |
| 975 | |
| 976 | func (f *function) CheckConflict(t *assignmentTarget, e exprDesc) { |
| 977 | extra, conflict := f.freeRegisterCount, false |
| 978 | for ; t != nil; t = t.previous { |
| 979 | if t.kind == kindIndexed { |
| 980 | if t.tableType == e.kind && t.table == e.info { |
| 981 | conflict = true |
| 982 | t.table, t.tableType = extra, kindLocal |
| 983 | } |
| 984 | if e.kind == kindLocal && t.index == e.info { |
| 985 | conflict = true |
| 986 | t.index = extra |
| 987 | } |
| 988 | } |
| 989 | } |
| 990 | if conflict { |
| 991 | if e.kind == kindLocal { |
| 992 | f.EncodeABC(opMove, extra, e.info, 0) |
| 993 | } else { |
| 994 | f.EncodeABC(opGetUpValue, extra, e.info, 0) |
| 995 | } |
| 996 | f.ReserveRegisters(1) |
| 997 | } |
| 998 | } |
| 999 | |
| 1000 | func (f *function) AdjustAssignment(variableCount, expressionCount int, e exprDesc) { |
| 1001 | if extra := variableCount - expressionCount; e.hasMultipleReturns() { |
no test coverage detected