cross-module `sink` analysis broken
### Nim Version

2.0, recent devel

### Description

2.0, devel

a.nim:
```nim
type QObject* {.inheritable.} = object
proc `=destroy`(self: var QObject) = discard
proc `=sink`(dest: var QObject, source: QObject) = discard
proc `=copy`(dest: var QObject, source: QObject) {.error.}
```

b.nim:
```nim
import a

type QWidget* = object of QObject
proc `=copy`(dest: var QWidget, source: QWidget) {.error.}
proc `=sink`(dest: var QWidget, source: QWidget) =
  `=sink`(QObject(dest), QObject(source))

proc show(v: QWidget) = discard

proc main() =
  let btn = QWidget()

  let tmp = proc() =
    btn.show()

  btn.show()

main()
```

### Current Output

```text
/testit.nim(6, 34) Error: '=dup' is not available for type <QWidget>, which is inferred from unavailable '=copy'; requires a copy because it's not the last read of 'source'; try to make source a 'sink' parameter; routine: =sink
```

### Expected Output

```text

```

### Known Workarounds

_No response_

### Additional Information

_No response_