Commit e1a418b
authored
Kotlin: generate static properties as get/set functions (#1800)
---------- Motivation ----------
During internal testing I found that 'static internal properties' do not work correctly.
Basically, the combination of 'internal + JvmStatic property + JvmName for get/set'
sometimes is not correctly resolved in runtime.
Moreover, I identified the gap related to internal static properties and functions in interfaces.
Even though companion object of interface allows usage of internal keyword, we cannot use
JvmStatic. Therefore, such usage must be flagged during validation.
---------- Solution ----------
1. This commit brings reproducer of runtime problems in functional tests.
2. It also provides a fix for such problems.
3. Validation of internal elements in LimeInterface for Kotlin is adjusted.
A note before showing the design decision:
- in the past the static properties were implemented in interfaces as get/set functions pair, because of similar problems
- moreover, we had to provide extension functions for get/set of static properties in classes to preserve compatibility with Java
Because of that and the problem stated in 'Motivation' section, the static properties in classes
are also handled using get/set function pair. This way internal static properties work as expected.
This commit additionally removes the generation of extension functions because they are not needed
now. Furthermore, validation of LimeInterface in Kotlin is adjusted to disallow static internal properties
and functions.
Signed-off-by: Patryk Wrobel <183546751+pwrobeldev@users.noreply.github.com>1 parent 7f4d031 commit e1a418b
31 files changed
Lines changed: 272 additions & 199 deletions
File tree
- functional-tests/functional
- android-kotlin/src/test/kotlin/com/here/android/test
- input
- lime
- src/cpp
- gluecodium/src
- main
- java/com/here/gluecodium/generator/kotlin
- resources/templates/kotlin
- test
- java/com/here/gluecodium/generator/kotlin
- resources/smoke
- generic_types/output/android-kotlin/com/example/smoke
- lambdas/output/android-kotlin/com/example/smoke
- listeners/output/android-kotlin/com/example/smoke
- properties/output/android-kotlin/com/example/smoke
- visibility_attribute
- input
- output
- android-kotlin/com/example/smoke
- android/com/example/smoke
- dart/lib/src/smoke
- swift/smoke
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
7 | 7 | | |
8 | 8 | | |
9 | 9 | | |
| 10 | + | |
10 | 11 | | |
11 | 12 | | |
12 | 13 | | |
| |||
functional-tests/functional/android-kotlin/src/test/kotlin/com/here/android/test/AttributesTest.kt
Lines changed: 4 additions & 10 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
55 | 55 | | |
56 | 56 | | |
57 | 57 | | |
58 | | - | |
59 | | - | |
60 | | - | |
61 | | - | |
62 | | - | |
63 | | - | |
64 | 58 | | |
65 | 59 | | |
66 | 60 | | |
| |||
85 | 79 | | |
86 | 80 | | |
87 | 81 | | |
88 | | - | |
| 82 | + | |
89 | 83 | | |
90 | | - | |
91 | | - | |
| 84 | + | |
| 85 | + | |
92 | 86 | | |
93 | 87 | | |
94 | | - | |
| 88 | + | |
95 | 89 | | |
96 | 90 | | |
97 | 91 | | |
| |||
Lines changed: 2 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
37 | 37 | | |
38 | 38 | | |
39 | 39 | | |
40 | | - | |
| 40 | + | |
41 | 41 | | |
42 | | - | |
| 42 | + | |
43 | 43 | | |
44 | 44 | | |
45 | 45 | | |
| |||
Lines changed: 2 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
114 | 114 | | |
115 | 115 | | |
116 | 116 | | |
117 | | - | |
118 | | - | |
| 117 | + | |
| 118 | + | |
119 | 119 | | |
120 | 120 | | |
121 | 121 | | |
| |||
Lines changed: 5 additions & 5 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
65 | 65 | | |
66 | 66 | | |
67 | 67 | | |
68 | | - | |
| 68 | + | |
69 | 69 | | |
70 | | - | |
| 70 | + | |
71 | 71 | | |
72 | 72 | | |
73 | 73 | | |
74 | 74 | | |
75 | 75 | | |
76 | 76 | | |
77 | | - | |
| 77 | + | |
78 | 78 | | |
79 | 79 | | |
80 | 80 | | |
81 | 81 | | |
82 | 82 | | |
83 | 83 | | |
84 | 84 | | |
85 | | - | |
| 85 | + | |
86 | 86 | | |
87 | 87 | | |
88 | 88 | | |
89 | 89 | | |
90 | 90 | | |
91 | 91 | | |
92 | 92 | | |
93 | | - | |
| 93 | + | |
94 | 94 | | |
95 | 95 | | |
96 | 96 | | |
| |||
Lines changed: 3 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
55 | 55 | | |
56 | 56 | | |
57 | 57 | | |
58 | | - | |
| 58 | + | |
59 | 59 | | |
60 | 60 | | |
61 | 61 | | |
| |||
64 | 64 | | |
65 | 65 | | |
66 | 66 | | |
67 | | - | |
| 67 | + | |
| 68 | + | |
68 | 69 | | |
69 | 70 | | |
70 | 71 | | |
| |||
Lines changed: 6 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
199 | 199 | | |
200 | 200 | | |
201 | 201 | | |
202 | | - | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
Lines changed: 1 addition & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
34 | 34 | | |
35 | 35 | | |
36 | 36 | | |
| 37 | + | |
37 | 38 | | |
38 | 39 | | |
39 | 40 | | |
| |||
Lines changed: 1 addition & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
20 | 20 | | |
21 | 21 | | |
22 | 22 | | |
| 23 | + | |
23 | 24 | | |
24 | 25 | | |
25 | 26 | | |
| |||
Lines changed: 3 additions & 11 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
37 | 37 | | |
38 | 38 | | |
39 | 39 | | |
| 40 | + | |
| 41 | + | |
40 | 42 | | |
41 | 43 | | |
42 | 44 | | |
43 | | - | |
44 | | - | |
45 | | - | |
| 45 | + | |
46 | 46 | | |
47 | 47 | | |
48 | 48 | | |
| |||
62 | 62 | | |
63 | 63 | | |
64 | 64 | | |
65 | | - | |
66 | | - | |
67 | | - | |
68 | | - | |
69 | | - | |
70 | | - | |
71 | | - | |
72 | | - | |
73 | 65 | | |
0 commit comments