Martin Vogel
67ff40d5cb
fix(kotlin): resolve calls through typed class properties ( #1555 )
...
The cross-file Kotlin walk resolved a call on a typed method parameter by
type, but a call on a class property - a primary-constructor val, a body
property or `this.prop` - fell to the name guess. The cross registry held
each own-file class from its extraction defs, whose properties carry no type
(constructor vals none at all), and the walk's typed AST registration of the
same class was added behind that entry under the same QN, so every lookup
returned the field-less one. Constructor injection is the common Kotlin
dependency shape, so `repository.inserir(...)` on an injected port bound to
whichever same-named method the guess found, including an implementation of
another port (#1555 ).
The walk now registers the file's own declarations into an overlay chained
to the cross registry and checked first, indexed once the top-level
declarations are collected. The sole-definer fallback walks the whole chain
so its candidate set is unchanged.
Typing more receivers exposed resolution gaps that the untyped receivers had
hidden; each would otherwise turn a typed call into a wrong name guess:
- a member of the receiver class wins over a same-named extension of the
same file (Kotlin resolution order; the overlay holds both);
- `x.hashCode()` / `toString()` / `equals()` on a receiver typed by another
file: the per-file pass emits the kotlin.Any placeholder, the cross pass
the declared override, and two targets at one occurrence are ambiguous to
the call join. The per-file placeholder is dropped when the cross pass
resolves the same occurrence;
- the same members on a stdlib or JDK type (`count.toString()` on an Int)
resolve to the kotlin.Any builtin instead of a seeded stdlib member that
has no graph node;
- a property READ on a typed receiver whose QN the graph spells differently
(a nested class's property) never becomes a CALL_REFERENCE to a
same-named function: the reference join falls back by name to
non-callable targets only, which binds the property's own node;
- a typed value without an `invoke` operator (`private val handshake:
Handshake?`) no longer shadows the same-named member function;
- inside a lambda whose typed receiver becomes `this` (`repo.let { .. }`),
and inside a member extension, the enclosing class's members stay
callable bare (the implicit-receiver chain); a call naming a class stays
a constructor call.
Fixes #1555
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com >
2026-10-18 16:42:30 +02:00
..
2026-10-17 20:44:27 +02:00
2026-09-18 23:27:23 +02:00
2026-10-14 04:08:22 +02:00
2026-10-15 18:07:25 +02:00
2026-10-03 23:55:18 +02:00
2026-10-03 23:55:18 +02:00
2026-10-03 23:55:18 +02:00
2026-10-03 23:55:18 +02:00
2026-06-05 21:53:25 +02:00
2026-10-03 23:55:18 +02:00
2026-10-03 23:55:18 +02:00
2026-09-05 06:05:08 +02:00
2026-07-13 01:50:03 +02:00
2026-03-15 22:37:34 +01:00
2026-09-12 16:50:42 +02:00
2026-08-11 13:37:32 +02:00
2026-09-28 00:30:10 +02:00
2026-09-04 21:45:24 +07:00
2026-10-11 20:16:34 +02:00
2026-09-18 03:31:22 +02:00
2026-10-01 19:59:02 +02:00
2026-06-29 09:45:28 -06:00
2026-07-22 17:48:20 +02:00
2026-10-13 18:33:40 +02:00
2026-07-18 15:52:50 +02:00
2026-10-01 00:10:39 +02:00
2026-10-13 19:35:11 +02:00
2026-10-13 00:33:09 +02:00
2026-10-13 18:33:40 +02:00
2026-09-11 23:26:33 +02:00
2026-09-08 02:04:51 +02:00
2026-10-04 16:22:57 +02:00
2026-09-25 22:56:39 +02:00
2026-10-14 22:09:37 +02:00
2026-08-04 16:37:06 +02:00
2026-10-03 23:55:18 +02:00
2026-10-03 23:55:18 +02:00
2026-10-03 23:55:18 +02:00
2026-10-03 23:55:18 +02:00
2026-10-06 03:19:38 +02:00
2026-10-06 03:19:38 +02:00
2026-10-03 23:55:18 +02:00
2026-10-03 23:55:18 +02:00
2026-10-03 23:55:18 +02:00
2026-06-06 22:16:04 +02:00
2026-10-10 15:24:17 +02:00
2026-08-14 06:46:05 -04:00
2026-07-18 15:52:50 +02:00
2026-10-14 21:05:58 +02:00
2026-10-14 22:54:02 +02:00
2026-10-05 18:52:26 +02:00
2026-09-25 23:03:56 +02:00
2026-09-30 23:33:54 +02:00
2026-08-09 13:06:42 +02:00
2026-07-18 11:48:59 +02:00
2026-10-11 16:57:48 +02:00
2026-08-11 13:37:32 +02:00
2026-09-28 00:01:56 +02:00
2026-09-06 16:23:45 +02:00
2026-08-13 14:04:51 +02:00
2026-09-05 06:05:08 +02:00
2026-10-11 12:00:31 +02:00
2026-10-12 19:07:09 +02:00
2026-10-09 02:55:23 +02:00
2026-10-11 12:43:35 +02:00
2026-10-09 02:55:23 +02:00
2026-10-10 23:13:18 +02:00
2026-10-11 02:09:04 +02:00
2026-10-12 19:11:19 +02:00
2026-10-11 12:43:35 +02:00
2026-10-11 16:46:52 +02:00
2026-10-11 02:09:04 +02:00
2026-10-11 02:09:04 +02:00
2026-10-10 11:34:47 +02:00
2026-10-11 02:09:04 +02:00
2026-10-09 18:24:01 +02:00
2026-09-22 08:48:33 +02:00
2026-06-23 06:38:45 +09:00
2026-08-27 10:15:09 +02:00
2026-03-25 09:28:11 +01:00
2026-10-13 00:02:21 +02:00
2026-10-09 01:56:17 +02:00
2026-10-09 01:54:53 +02:00
2026-10-13 00:31:54 +02:00
2026-08-18 15:56:41 +08:00
2026-10-13 18:47:51 +02:00
2026-10-12 20:18:19 +02:00
2026-10-11 11:42:35 +02:00
2026-10-01 22:56:52 +02:00
2026-10-14 20:18:55 +02:00
2026-09-30 23:50:03 +02:00
2026-10-03 23:55:18 +02:00
2026-10-03 23:55:18 +02:00
2026-09-01 15:51:50 +08:00
2026-08-26 22:51:29 +02:00
2026-10-11 02:08:58 +02:00
2026-06-07 19:13:01 +02:00
2026-06-07 19:13:01 +02:00
2026-06-07 19:13:01 +02:00
2026-06-27 16:23:26 +02:00
2026-06-07 20:05:24 +02:00
2026-10-16 18:16:50 +02:00
2026-10-10 15:40:21 +02:00
2026-08-28 21:30:06 +02:00
2026-10-10 17:19:41 +02:00
2026-10-14 22:54:02 +02:00
2026-10-05 18:52:31 +02:00
2026-10-06 03:19:38 +02:00
2026-09-18 23:27:23 +02:00
2026-09-30 23:50:03 +02:00
2026-08-17 22:07:11 +03:00
2026-10-11 20:16:34 +02:00
2026-08-28 20:56:33 +02:00
2026-09-26 07:14:58 +02:00
2026-10-16 02:10:53 +02:00
2026-09-09 16:06:59 +08:00
2026-10-02 20:51:31 +02:00
2026-09-26 07:14:58 +02:00
2026-10-13 00:33:07 +02:00
2026-07-18 13:48:06 +02:00
2026-10-03 23:55:18 +02:00
2026-10-03 23:55:18 +02:00
2026-10-03 23:55:18 +02:00
2026-10-03 23:55:18 +02:00
2026-10-06 18:07:16 +02:00
2026-10-03 23:55:18 +02:00
2026-10-03 23:55:18 +02:00
2026-10-06 18:07:16 +02:00
2026-10-03 23:55:18 +02:00
2026-10-03 23:55:18 +02:00
2026-10-03 23:55:18 +02:00
2026-06-02 18:52:37 +02:00
2026-07-18 15:52:50 +02:00
2026-07-18 15:52:50 +02:00
2026-10-18 16:42:30 +02:00
2026-10-05 18:52:31 +02:00
2026-10-17 14:48:52 +02:00
2026-10-10 13:37:44 +02:00
2026-09-10 10:21:35 +02:00
2026-10-11 22:11:56 +02:00
2026-09-04 15:42:15 +02:00
2026-09-05 07:59:14 +02:00
2026-08-29 17:30:00 +02:00
2026-03-15 22:37:34 +01:00
2026-10-18 16:42:30 +02:00
2026-07-18 01:26:08 +02:00
2026-06-08 22:55:23 +02:00
2026-07-18 15:52:50 +02:00
2026-10-14 18:26:57 +02:00
2026-09-04 22:02:47 +02:00
2026-08-11 17:01:24 +02:00
2026-09-18 23:27:23 +02:00
2026-10-14 22:54:02 +02:00
2026-09-13 13:52:08 +03:00
2026-06-12 02:17:39 +02:00
2026-08-20 21:20:44 +02:00
2026-10-11 02:08:58 +02:00
2026-09-28 19:45:45 +02:00
2026-10-13 00:02:21 +02:00
2026-09-06 13:12:20 +08:00
2026-10-12 20:23:13 +02:00
2026-10-02 05:34:41 +02:00
2026-07-18 15:52:50 +02:00
2026-10-13 00:02:21 +02:00
2026-10-05 02:15:08 +02:00
2026-10-05 23:55:25 +02:00
2026-10-17 23:05:56 +02:00
2026-10-10 15:40:21 +02:00
2026-07-18 01:26:08 +02:00
2026-10-03 23:55:18 +02:00
2026-10-03 23:55:18 +02:00
2026-07-18 01:26:08 +02:00
2026-08-10 16:40:31 +02:00
2026-10-12 21:29:00 +02:00
2026-05-09 14:16:15 +02:00
2026-10-13 00:33:09 +02:00
2026-10-13 18:33:39 +02:00
2026-08-11 17:01:24 +02:00
2026-09-04 22:02:47 +02:00
2026-08-18 22:30:28 +02:00
2026-06-23 13:52:08 -03:00
2026-10-03 18:37:19 +02:00
2026-10-15 18:07:25 +02:00
2026-07-18 15:52:50 +02:00
2026-09-28 00:13:39 +02:00
2026-08-03 15:42:32 +02:00
2026-10-11 20:42:19 +02:00
2026-10-03 18:37:19 +02:00
2026-09-13 01:27:43 +02:00
2026-10-15 03:18:42 +02:00
2026-10-11 18:23:58 +02:00
2026-08-08 17:35:05 +02:00
2026-10-17 14:48:52 +02:00
2026-10-11 15:46:00 +02:00
2026-10-02 06:50:04 +02:00
2026-09-18 03:31:42 +02:00
2026-09-18 23:27:23 +02:00
2026-06-28 21:57:35 -06:00
2026-09-30 23:21:43 +02:00
2026-09-21 11:29:04 +03:00
2026-07-25 00:37:05 +02:00
2026-09-13 13:52:00 +03:00
2026-08-07 14:58:22 +02:00
2026-10-06 02:44:56 +02:00
2026-09-25 18:37:16 +02:00
2026-08-10 12:57:34 +01:00
2026-10-14 21:20:07 +02:00
2026-03-20 20:32:38 +01:00
2026-10-07 19:20:08 +02:00
2026-07-03 20:16:39 +02:00
2026-10-05 23:55:25 +02:00
2026-10-13 18:33:40 +02:00
2026-10-14 21:05:58 +02:00
2026-10-14 18:26:57 +02:00
2026-10-03 23:55:18 +02:00
2026-10-14 21:20:07 +02:00
2026-03-24 23:48:23 +01:00
2026-09-21 20:29:27 +02:00
2026-10-17 14:48:52 +02:00
2026-10-05 02:15:08 +02:00
2026-10-05 18:52:26 +02:00
2026-10-03 23:55:18 +02:00
2026-10-05 02:15:08 +02:00
2026-10-17 20:44:27 +02:00
2026-10-17 14:48:52 +02:00
2026-10-03 23:55:18 +02:00
2026-10-05 02:15:08 +02:00
2026-10-05 02:15:08 +02:00
2026-10-03 23:55:18 +02:00
2026-10-03 23:55:18 +02:00
2026-09-30 23:29:52 +02:00
2026-10-03 23:55:18 +02:00
2026-10-17 14:48:52 +02:00
2026-10-03 23:55:18 +02:00
2026-10-17 14:48:52 +02:00
2026-10-17 14:48:52 +02:00
2026-10-13 18:33:40 +02:00
2026-10-05 18:52:31 +02:00
2026-10-06 18:07:16 +02:00
2026-10-06 05:58:39 +02:00
2026-10-17 14:48:52 +02:00
2026-09-18 23:26:05 +02:00
2026-09-02 21:55:30 -04:00
2026-10-18 00:17:58 +02:00
2026-06-10 12:11:02 +02:00
2026-07-21 15:32:15 +02:00
2026-10-13 20:57:12 +02:00
2026-10-11 23:14:24 +02:00
2026-10-03 23:55:18 +02:00
2026-08-08 17:35:05 +02:00
2026-10-07 18:20:52 +02:00
2026-09-04 09:41:30 +02:00
2026-10-16 18:09:06 +02:00
2026-10-03 23:55:18 +02:00
2026-10-06 03:36:33 +02:00
2026-10-06 03:36:33 +02:00
2026-08-08 17:35:05 +02:00
2026-06-05 21:53:25 +02:00
2026-08-14 00:21:31 +02:00
2026-08-14 04:40:07 +02:00
2026-08-14 12:48:40 +02:00
2026-10-03 18:37:19 +02:00
2026-10-11 16:57:48 +02:00
2026-09-12 16:21:30 +02:00
2026-10-03 23:55:18 +02:00
2026-09-09 16:06:59 +08:00
2026-06-06 19:48:48 +02:00
2026-09-20 21:40:37 +02:00
2026-09-09 16:06:59 +08:00
2026-10-04 19:08:28 +02:00
2026-03-24 23:48:23 +01:00
2026-04-15 23:56:03 +02:00