mirror of
https://github.com/github/codeql.git
synced 2026-07-11 22:45:33 +02:00
Kotlin: converge default property-accessor locations onto the K2-native spans
Synthesised and bare `get`/`set` accessors were extracted with different
source locations depending on the frontend:
val typedProp: Int = 3 // getTypedProp
K1: 5:5:5:17 (val..name) K2: 5:5:5:22 (val..type)
val defaultGetter = 7
get // getDefaultGetter
K1: 19:5:19:21 (property head) K2: 20:13:20:15 (`get` keyword)
Under K2 the extractor has no PSI back-mapping for these accessors
(`getKtFile` returns null), so it cannot reproduce K1's property-name-end
span; K2 instead falls back to the raw IR offsets. Rather than converge on a
value K2 cannot produce, K1 is made to match the K2-native spans via the PSI:
* a bare `get`/`set` keyword now points at the keyword token; and
* a fully synthesised accessor now spans the property signature
(`val`/`var` .. type annotation, or .. name when untyped), excluding the
initialiser.
Explicit-body accessors (`get() = 5`) are unaffected: they are located at
their body and never take this override.
Only K1 output changes; the test-kotlin2 (K2) expected files are unchanged.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
@@ -54,6 +54,7 @@ import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.types.Variance
|
||||
import org.jetbrains.kotlin.util.OperatorNameConventions
|
||||
import org.jetbrains.kotlin.psi.KtProperty
|
||||
import org.jetbrains.kotlin.psi.KtPropertyAccessor
|
||||
import org.jetbrains.kotlin.psi.KtVariableDeclaration
|
||||
import org.jetbrains.kotlin.psi.psiUtil.endOffset
|
||||
import org.jetbrains.kotlin.psi.psiUtil.startOffset
|
||||
@@ -2697,11 +2698,13 @@ open class KotlinFileExtractor(
|
||||
val getter = p.getter
|
||||
val setter = p.setter
|
||||
|
||||
// Synthesised (DEFAULT_PROPERTY_ACCESSOR) getter and setter should point
|
||||
// at the property head, not the initialiser or custom accessor body.
|
||||
// Synthesised (DEFAULT_PROPERTY_ACCESSOR) getters and setters should
|
||||
// match the span the K2 frontend emits natively (see
|
||||
// getPsiBasedAccessorLocation): the keyword token for a bare `get`/`set`,
|
||||
// or the property signature for a fully synthesised accessor.
|
||||
fun accessorOverride(f: IrFunction) =
|
||||
if (f.origin == IrDeclarationOrigin.DEFAULT_PROPERTY_ACCESSOR)
|
||||
getPsiBasedAccessorLocation(p)?.let { OverriddenFunctionAttributes(sourceLoc = it) }
|
||||
getPsiBasedAccessorLocation(p, f)?.let { OverriddenFunctionAttributes(sourceLoc = it) }
|
||||
else null
|
||||
|
||||
if (getter == null) {
|
||||
@@ -2993,15 +2996,45 @@ open class KotlinFileExtractor(
|
||||
return tw.getLocation(declStart, declEnd)
|
||||
}
|
||||
|
||||
private fun getPsiBasedAccessorLocation(p: IrProperty): Label<DbLocation>? {
|
||||
/**
|
||||
* Returns the PSI-based location for a synthesised (`DEFAULT_PROPERTY_ACCESSOR`)
|
||||
* getter or setter, matching the span the K2 frontend emits natively.
|
||||
*
|
||||
* Under K2 the extractor has no PSI back-mapping for these accessors
|
||||
* ([getKtFile] returns null), so it falls back to the raw IR offsets, which are:
|
||||
* - for a *bare* accessor (an explicit `get`/`set` keyword with no body): the
|
||||
* keyword token itself; and
|
||||
* - for a fully *synthesised* accessor (no accessor written in source): the
|
||||
* property signature from the `val`/`var` keyword through the type annotation
|
||||
* (or the name identifier when there is no explicit type), excluding the
|
||||
* initialiser.
|
||||
*
|
||||
* K2 cannot recover the property-name-end PSI location, so rather than converge
|
||||
* on a value K2 cannot produce we converge K1 onto these K2-native spans. This
|
||||
* helper returns null under K2 (where the raw offsets already produce them) and
|
||||
* reproduces them from the PSI under K1.
|
||||
*/
|
||||
private fun getPsiBasedAccessorLocation(p: IrProperty, accessor: IrFunction): Label<DbLocation>? {
|
||||
if (p.startOffset < 0 || p.endOffset < 0) return null
|
||||
val file = currentIrFile ?: return null
|
||||
val ktFile = getPsi2Ir()?.getKtFile(file) ?: return null
|
||||
val ktProperty = ktFile.findElementAt(p.startOffset)
|
||||
?.let { leaf -> generateSequence(leaf) { it.parent }.filterIsInstance<KtProperty>().firstOrNull() }
|
||||
?: return null
|
||||
val isGetter = p.getter?.symbol == accessor.symbol
|
||||
val ktAccessor: KtPropertyAccessor? = if (isGetter) ktProperty.getter else ktProperty.setter
|
||||
if (ktAccessor != null) {
|
||||
// An explicit accessor with a body is located at its body elsewhere; only
|
||||
// bare `get`/`set` keywords are handled here, pointing at the keyword token.
|
||||
if (ktAccessor.hasBody()) return null
|
||||
val keyword = ktAccessor.namePlaceholder
|
||||
return tw.getLocation(keyword.startOffset, keyword.endOffset)
|
||||
}
|
||||
// Fully synthesised accessor: span the property signature, excluding the initialiser.
|
||||
val declStart = ktProperty.valOrVarKeyword.startOffset
|
||||
val declEnd = ktProperty.nameIdentifier?.endOffset ?: ktProperty.valOrVarKeyword.endOffset
|
||||
val declEnd = ktProperty.typeReference?.endOffset
|
||||
?: ktProperty.nameIdentifier?.endOffset
|
||||
?: ktProperty.valOrVarKeyword.endOffset
|
||||
return tw.getLocation(declStart, declEnd)
|
||||
}
|
||||
|
||||
|
||||
@@ -32,8 +32,8 @@ annotations
|
||||
| def.kt:41:5:41:12 | Annot0k | def.kt:42:5:42:19 | Z | def.kt:5:1:21:60 | Annot0k |
|
||||
| def.kt:45:1:45:8 | Annot0k | def.kt:46:1:51:1 | fn | def.kt:5:1:21:60 | Annot0k |
|
||||
| def.kt:46:21:46:28 | Annot0k | def.kt:46:21:46:39 | a | def.kt:5:1:21:60 | Annot0k |
|
||||
| def.kt:54:1:54:12 | Annot0k | def.kt:57:1:57:5 | getP | def.kt:5:1:21:60 | Annot0k |
|
||||
| def.kt:55:1:55:12 | Annot0k | def.kt:57:1:57:5 | setP | def.kt:5:1:21:60 | Annot0k |
|
||||
| def.kt:54:1:54:12 | Annot0k | def.kt:57:1:57:19 | getP | def.kt:5:1:21:60 | Annot0k |
|
||||
| def.kt:55:1:55:12 | Annot0k | def.kt:57:1:57:19 | setP | def.kt:5:1:21:60 | Annot0k |
|
||||
| def.kt:56:1:56:14 | Annot0k | def.kt:57:1:57:23 | p | def.kt:5:1:21:60 | Annot0k |
|
||||
| def.kt:59:5:59:21 | Annot0k | def.kt:59:5:59:28 | <this> | def.kt:5:1:21:60 | Annot0k |
|
||||
| use.java:10:5:10:21 | Annot0j | use.java:14:18:14:18 | Z | Annot0j.java:1:19:1:25 | Annot0j |
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
| Test.java:2:17:2:17 | m | m | m |
|
||||
| test.kt:4:9:4:18 | getX_prop | getX_prop | getX |
|
||||
| test.kt:6:5:6:19 | getX | getX | getX |
|
||||
| test.kt:10:5:10:9 | changeY | changeY | setY |
|
||||
| test.kt:10:5:10:9 | y | y | getY |
|
||||
| test.kt:10:5:10:14 | changeY | changeY | setY |
|
||||
| test.kt:10:5:10:14 | y | y | getY |
|
||||
| test.kt:13:5:13:15 | method | method | fn |
|
||||
| test.kt:17:5:17:14 | p | p | p |
|
||||
| test.kt:18:23:18:32 | w | w | q |
|
||||
|
||||
@@ -28,7 +28,7 @@ commentOwners
|
||||
| comments.kt:54:5:56:7 | /**\n * An init block comment\n */ | comments.kt:53:1:58:1 | InitBlock |
|
||||
| comments.kt:61:5:63:7 | /**\n * A prop comment\n */ | comments.kt:64:5:68:17 | prop |
|
||||
| comments.kt:65:9:67:11 | /**\n * An accessor comment\n */ | comments.kt:68:9:68:17 | getProp |
|
||||
| comments.kt:71:9:73:11 | /**\n * An anonymous function comment\n */ | comments.kt:70:5:70:9 | getL |
|
||||
| comments.kt:71:9:73:11 | /**\n * An anonymous function comment\n */ | comments.kt:70:5:70:20 | getL |
|
||||
| comments.kt:71:9:73:11 | /**\n * An anonymous function comment\n */ | comments.kt:70:5:76:10 | l |
|
||||
| comments.kt:71:9:73:11 | /**\n * An anonymous function comment\n */ | comments.kt:70:5:76:10 | l |
|
||||
| comments.kt:79:9:81:11 | /**\n * A local function comment\n */ | comments.kt:82:9:82:24 | localFn |
|
||||
|
||||
@@ -297,18 +297,18 @@
|
||||
| delegatedProperties.kt:54:51:54:68 | KProperty<?> | file://:0:0:0:0 | <none> | TypeAccess |
|
||||
| delegatedProperties.kt:56:16:56:33 | ResourceDelegate | delegatedProperties.kt:54:14:57:5 | provideDelegate | TypeAccess |
|
||||
| delegatedProperties.kt:56:16:56:33 | new ResourceDelegate(...) | delegatedProperties.kt:54:14:57:5 | provideDelegate | ClassInstanceExpr |
|
||||
| delegatedProperties.kt:60:1:60:15 | Unit | file://:0:0:0:0 | <none> | TypeAccess |
|
||||
| delegatedProperties.kt:60:1:60:15 | int | file://:0:0:0:0 | <none> | TypeAccess |
|
||||
| delegatedProperties.kt:60:1:60:15 | int | file://:0:0:0:0 | <none> | TypeAccess |
|
||||
| delegatedProperties.kt:60:1:60:20 | Unit | file://:0:0:0:0 | <none> | TypeAccess |
|
||||
| delegatedProperties.kt:60:1:60:20 | int | file://:0:0:0:0 | <none> | TypeAccess |
|
||||
| delegatedProperties.kt:60:1:60:20 | int | file://:0:0:0:0 | <none> | TypeAccess |
|
||||
| delegatedProperties.kt:60:1:60:24 | ...=... | delegatedProperties.kt:0:0:0:0 | <clinit> | KtInitializerAssignExpr |
|
||||
| delegatedProperties.kt:60:1:60:24 | ...=... | delegatedProperties.kt:60:1:60:15 | setTopLevelInt | AssignExpr |
|
||||
| delegatedProperties.kt:60:1:60:24 | <set-?> | delegatedProperties.kt:60:1:60:15 | setTopLevelInt | VarAccess |
|
||||
| delegatedProperties.kt:60:1:60:24 | ...=... | delegatedProperties.kt:60:1:60:20 | setTopLevelInt | AssignExpr |
|
||||
| delegatedProperties.kt:60:1:60:24 | <set-?> | delegatedProperties.kt:60:1:60:20 | setTopLevelInt | VarAccess |
|
||||
| delegatedProperties.kt:60:1:60:24 | DelegatedPropertiesKt | delegatedProperties.kt:0:0:0:0 | <clinit> | TypeAccess |
|
||||
| delegatedProperties.kt:60:1:60:24 | DelegatedPropertiesKt | delegatedProperties.kt:60:1:60:15 | getTopLevelInt | TypeAccess |
|
||||
| delegatedProperties.kt:60:1:60:24 | DelegatedPropertiesKt | delegatedProperties.kt:60:1:60:15 | setTopLevelInt | TypeAccess |
|
||||
| delegatedProperties.kt:60:1:60:24 | DelegatedPropertiesKt | delegatedProperties.kt:60:1:60:20 | getTopLevelInt | TypeAccess |
|
||||
| delegatedProperties.kt:60:1:60:24 | DelegatedPropertiesKt | delegatedProperties.kt:60:1:60:20 | setTopLevelInt | TypeAccess |
|
||||
| delegatedProperties.kt:60:1:60:24 | DelegatedPropertiesKt.topLevelInt | delegatedProperties.kt:0:0:0:0 | <clinit> | VarAccess |
|
||||
| delegatedProperties.kt:60:1:60:24 | DelegatedPropertiesKt.topLevelInt | delegatedProperties.kt:60:1:60:15 | getTopLevelInt | VarAccess |
|
||||
| delegatedProperties.kt:60:1:60:24 | DelegatedPropertiesKt.topLevelInt | delegatedProperties.kt:60:1:60:15 | setTopLevelInt | VarAccess |
|
||||
| delegatedProperties.kt:60:1:60:24 | DelegatedPropertiesKt.topLevelInt | delegatedProperties.kt:60:1:60:20 | getTopLevelInt | VarAccess |
|
||||
| delegatedProperties.kt:60:1:60:24 | DelegatedPropertiesKt.topLevelInt | delegatedProperties.kt:60:1:60:20 | setTopLevelInt | VarAccess |
|
||||
| delegatedProperties.kt:60:1:60:24 | int | file://:0:0:0:0 | <none> | TypeAccess |
|
||||
| delegatedProperties.kt:60:24:60:24 | 0 | delegatedProperties.kt:0:0:0:0 | <clinit> | IntegerLiteral |
|
||||
| delegatedProperties.kt:62:25:62:48 | ...=... | delegatedProperties.kt:62:24:62:49 | ClassWithDelegate | KtInitializerAssignExpr |
|
||||
@@ -1557,12 +1557,12 @@
|
||||
| exprs.kt:195:16:197:9 | <Stmt> | exprs.kt:193:13:198:5 | getObject | StmtExpr |
|
||||
| exprs.kt:195:16:197:9 | Interface1 | exprs.kt:193:13:198:5 | getObject | TypeAccess |
|
||||
| exprs.kt:195:16:197:9 | new (...) | exprs.kt:193:13:198:5 | getObject | ClassInstanceExpr |
|
||||
| exprs.kt:196:13:196:18 | String | file://:0:0:0:0 | <none> | TypeAccess |
|
||||
| exprs.kt:196:13:196:26 | String | file://:0:0:0:0 | <none> | TypeAccess |
|
||||
| exprs.kt:196:13:196:49 | ...=... | exprs.kt:195:16:197:9 | | KtInitializerAssignExpr |
|
||||
| exprs.kt:196:13:196:49 | String | file://:0:0:0:0 | <none> | TypeAccess |
|
||||
| exprs.kt:196:13:196:49 | a3 | exprs.kt:195:16:197:9 | | VarAccess |
|
||||
| exprs.kt:196:13:196:49 | this | exprs.kt:196:13:196:18 | getA3 | ThisAccess |
|
||||
| exprs.kt:196:13:196:49 | this.a3 | exprs.kt:196:13:196:18 | getA3 | VarAccess |
|
||||
| exprs.kt:196:13:196:49 | this | exprs.kt:196:13:196:26 | getA3 | ThisAccess |
|
||||
| exprs.kt:196:13:196:49 | this.a3 | exprs.kt:196:13:196:26 | getA3 | VarAccess |
|
||||
| exprs.kt:196:31:196:32 | getA1(...) | exprs.kt:195:16:197:9 | | MethodCall |
|
||||
| exprs.kt:196:31:196:32 | this | exprs.kt:195:16:197:9 | | ThisAccess |
|
||||
| exprs.kt:196:31:196:37 | ... + ... | exprs.kt:195:16:197:9 | | AddExpr |
|
||||
|
||||
@@ -187,7 +187,7 @@ anon_class_member_modifiers
|
||||
| delegatedProperties.kt:87:34:87:46 | new KMutableProperty0<Integer>(...) { ... } | delegatedProperties.kt:87:34:87:46 | get | override, public |
|
||||
| delegatedProperties.kt:87:34:87:46 | new KMutableProperty0<Integer>(...) { ... } | delegatedProperties.kt:87:34:87:46 | invoke | override, public |
|
||||
| delegatedProperties.kt:87:34:87:46 | new KMutableProperty0<Integer>(...) { ... } | delegatedProperties.kt:87:34:87:46 | set | override, public |
|
||||
| exprs.kt:195:16:197:9 | new Interface1(...) { ... } | exprs.kt:196:13:196:18 | getA3 | final, public |
|
||||
| exprs.kt:195:16:197:9 | new Interface1(...) { ... } | exprs.kt:196:13:196:26 | getA3 | final, public |
|
||||
| funcExprs.kt:22:26:22:33 | new Function0<Integer>(...) { ... } | funcExprs.kt:22:26:22:33 | invoke | final, override, public |
|
||||
| funcExprs.kt:23:26:23:33 | new Function0<Object>(...) { ... } | funcExprs.kt:23:26:23:33 | invoke | final, override, public |
|
||||
| funcExprs.kt:24:26:24:33 | new Function0<Object>(...) { ... } | funcExprs.kt:24:26:24:33 | invoke | final, override, public |
|
||||
|
||||
@@ -12,11 +12,11 @@
|
||||
| Test.java:13:7:13:10 | User | Test.java:13:7:13:10 | User |
|
||||
| Test.java:13:7:13:10 | User | Test.java:15:22:15:25 | test |
|
||||
| Test.kt:1:1:8:1 | TestKt | Test.kt:1:1:8:1 | TestKt |
|
||||
| Test.kt:1:1:8:1 | TestKt | Test.kt:3:3:3:11 | getField |
|
||||
| Test.kt:1:1:8:1 | TestKt | Test.kt:3:3:3:11 | setField |
|
||||
| Test.kt:1:1:8:1 | TestKt | Test.kt:3:3:3:15 | getField |
|
||||
| Test.kt:1:1:8:1 | TestKt | Test.kt:3:3:3:15 | setField |
|
||||
| Test.kt:1:1:8:1 | TestKt | Test.kt:3:3:3:22 | field |
|
||||
| Test.kt:1:1:8:1 | TestKt | Test.kt:5:3:5:14 | getRawField |
|
||||
| Test.kt:1:1:8:1 | TestKt | Test.kt:5:3:5:14 | setRawField |
|
||||
| Test.kt:1:1:8:1 | TestKt | Test.kt:5:3:5:18 | getRawField |
|
||||
| Test.kt:1:1:8:1 | TestKt | Test.kt:5:3:5:18 | setRawField |
|
||||
| Test.kt:1:1:8:1 | TestKt | Test.kt:5:3:5:25 | rawField |
|
||||
| Test.kt:1:1:8:1 | TestKt | Test.kt:6:3:6:22 | method |
|
||||
| Test.kt:10:1:10:20 | FieldUsedKt | Test.kt:10:1:10:20 | FieldUsedKt |
|
||||
@@ -26,27 +26,27 @@
|
||||
| Test.kt:14:1:14:22 | NeitherUsedKt | Test.kt:14:1:14:22 | NeitherUsedKt |
|
||||
| Test.kt:16:1:27:1 | UserKt | Test.kt:16:1:27:1 | UserKt |
|
||||
| Test.kt:16:1:27:1 | UserKt | Test.kt:18:3:25:3 | test |
|
||||
| file:///!unknown-binary-location/TestKt.class:0:0:0:0 | TestKt<ConstructorUsedKt> | Test.kt:3:3:3:11 | getField |
|
||||
| file:///!unknown-binary-location/TestKt.class:0:0:0:0 | TestKt<ConstructorUsedKt> | Test.kt:3:3:3:11 | setField |
|
||||
| file:///!unknown-binary-location/TestKt.class:0:0:0:0 | TestKt<ConstructorUsedKt> | Test.kt:5:3:5:14 | getRawField |
|
||||
| file:///!unknown-binary-location/TestKt.class:0:0:0:0 | TestKt<ConstructorUsedKt> | Test.kt:5:3:5:14 | setRawField |
|
||||
| file:///!unknown-binary-location/TestKt.class:0:0:0:0 | TestKt<ConstructorUsedKt> | Test.kt:3:3:3:15 | getField |
|
||||
| file:///!unknown-binary-location/TestKt.class:0:0:0:0 | TestKt<ConstructorUsedKt> | Test.kt:3:3:3:15 | setField |
|
||||
| file:///!unknown-binary-location/TestKt.class:0:0:0:0 | TestKt<ConstructorUsedKt> | Test.kt:5:3:5:18 | getRawField |
|
||||
| file:///!unknown-binary-location/TestKt.class:0:0:0:0 | TestKt<ConstructorUsedKt> | Test.kt:5:3:5:18 | setRawField |
|
||||
| file:///!unknown-binary-location/TestKt.class:0:0:0:0 | TestKt<ConstructorUsedKt> | file:///!unknown-binary-location/TestKt.class:0:0:0:0 | TestKt<ConstructorUsedKt> |
|
||||
| file:///!unknown-binary-location/TestKt.class:0:0:0:0 | TestKt<ConstructorUsedKt> | file:///!unknown-binary-location/TestKt.class:0:0:0:0 | method |
|
||||
| file:///!unknown-binary-location/TestKt.class:0:0:0:0 | TestKt<FieldUsedKt> | Test.kt:3:3:3:11 | getField |
|
||||
| file:///!unknown-binary-location/TestKt.class:0:0:0:0 | TestKt<FieldUsedKt> | Test.kt:3:3:3:11 | setField |
|
||||
| file:///!unknown-binary-location/TestKt.class:0:0:0:0 | TestKt<FieldUsedKt> | Test.kt:5:3:5:14 | getRawField |
|
||||
| file:///!unknown-binary-location/TestKt.class:0:0:0:0 | TestKt<FieldUsedKt> | Test.kt:5:3:5:14 | setRawField |
|
||||
| file:///!unknown-binary-location/TestKt.class:0:0:0:0 | TestKt<FieldUsedKt> | Test.kt:3:3:3:15 | getField |
|
||||
| file:///!unknown-binary-location/TestKt.class:0:0:0:0 | TestKt<FieldUsedKt> | Test.kt:3:3:3:15 | setField |
|
||||
| file:///!unknown-binary-location/TestKt.class:0:0:0:0 | TestKt<FieldUsedKt> | Test.kt:5:3:5:18 | getRawField |
|
||||
| file:///!unknown-binary-location/TestKt.class:0:0:0:0 | TestKt<FieldUsedKt> | Test.kt:5:3:5:18 | setRawField |
|
||||
| file:///!unknown-binary-location/TestKt.class:0:0:0:0 | TestKt<FieldUsedKt> | file:///!unknown-binary-location/TestKt.class:0:0:0:0 | TestKt<FieldUsedKt> |
|
||||
| file:///!unknown-binary-location/TestKt.class:0:0:0:0 | TestKt<FieldUsedKt> | file:///!unknown-binary-location/TestKt.class:0:0:0:0 | method |
|
||||
| file:///!unknown-binary-location/TestKt.class:0:0:0:0 | TestKt<MethodUsedKt> | Test.kt:3:3:3:11 | getField |
|
||||
| file:///!unknown-binary-location/TestKt.class:0:0:0:0 | TestKt<MethodUsedKt> | Test.kt:3:3:3:11 | setField |
|
||||
| file:///!unknown-binary-location/TestKt.class:0:0:0:0 | TestKt<MethodUsedKt> | Test.kt:5:3:5:14 | getRawField |
|
||||
| file:///!unknown-binary-location/TestKt.class:0:0:0:0 | TestKt<MethodUsedKt> | Test.kt:5:3:5:14 | setRawField |
|
||||
| file:///!unknown-binary-location/TestKt.class:0:0:0:0 | TestKt<MethodUsedKt> | Test.kt:3:3:3:15 | getField |
|
||||
| file:///!unknown-binary-location/TestKt.class:0:0:0:0 | TestKt<MethodUsedKt> | Test.kt:3:3:3:15 | setField |
|
||||
| file:///!unknown-binary-location/TestKt.class:0:0:0:0 | TestKt<MethodUsedKt> | Test.kt:5:3:5:18 | getRawField |
|
||||
| file:///!unknown-binary-location/TestKt.class:0:0:0:0 | TestKt<MethodUsedKt> | Test.kt:5:3:5:18 | setRawField |
|
||||
| file:///!unknown-binary-location/TestKt.class:0:0:0:0 | TestKt<MethodUsedKt> | file:///!unknown-binary-location/TestKt.class:0:0:0:0 | TestKt<MethodUsedKt> |
|
||||
| file:///!unknown-binary-location/TestKt.class:0:0:0:0 | TestKt<MethodUsedKt> | file:///!unknown-binary-location/TestKt.class:0:0:0:0 | method |
|
||||
| file:///!unknown-binary-location/TestKt.class:0:0:0:0 | TestKt<RawFieldUsedKt> | Test.kt:3:3:3:11 | getField |
|
||||
| file:///!unknown-binary-location/TestKt.class:0:0:0:0 | TestKt<RawFieldUsedKt> | Test.kt:3:3:3:11 | setField |
|
||||
| file:///!unknown-binary-location/TestKt.class:0:0:0:0 | TestKt<RawFieldUsedKt> | Test.kt:5:3:5:14 | getRawField |
|
||||
| file:///!unknown-binary-location/TestKt.class:0:0:0:0 | TestKt<RawFieldUsedKt> | Test.kt:5:3:5:14 | setRawField |
|
||||
| file:///!unknown-binary-location/TestKt.class:0:0:0:0 | TestKt<RawFieldUsedKt> | Test.kt:3:3:3:15 | getField |
|
||||
| file:///!unknown-binary-location/TestKt.class:0:0:0:0 | TestKt<RawFieldUsedKt> | Test.kt:3:3:3:15 | setField |
|
||||
| file:///!unknown-binary-location/TestKt.class:0:0:0:0 | TestKt<RawFieldUsedKt> | Test.kt:5:3:5:18 | getRawField |
|
||||
| file:///!unknown-binary-location/TestKt.class:0:0:0:0 | TestKt<RawFieldUsedKt> | Test.kt:5:3:5:18 | setRawField |
|
||||
| file:///!unknown-binary-location/TestKt.class:0:0:0:0 | TestKt<RawFieldUsedKt> | file:///!unknown-binary-location/TestKt.class:0:0:0:0 | TestKt<RawFieldUsedKt> |
|
||||
| file:///!unknown-binary-location/TestKt.class:0:0:0:0 | TestKt<RawFieldUsedKt> | file:///!unknown-binary-location/TestKt.class:0:0:0:0 | method |
|
||||
|
||||
@@ -10,8 +10,8 @@ staticMembers
|
||||
| test.kt:9:1:29:1 | HasCompanion | test.kt:25:18:25:60 | setPropWithStaticSetter | Method |
|
||||
| test.kt:31:1:47:1 | NonCompanion | test.kt:31:1:47:1 | INSTANCE | Field |
|
||||
| test.kt:31:1:47:1 | NonCompanion | test.kt:33:14:33:69 | staticMethod | Method |
|
||||
| test.kt:31:1:47:1 | NonCompanion | test.kt:36:14:36:27 | getStaticProp | Method |
|
||||
| test.kt:31:1:47:1 | NonCompanion | test.kt:36:14:36:27 | setStaticProp | Method |
|
||||
| test.kt:31:1:47:1 | NonCompanion | test.kt:36:14:36:35 | getStaticProp | Method |
|
||||
| test.kt:31:1:47:1 | NonCompanion | test.kt:36:14:36:35 | setStaticProp | Method |
|
||||
| test.kt:31:1:47:1 | NonCompanion | test.kt:40:16:40:43 | getPropWithStaticGetter | Method |
|
||||
| test.kt:31:1:47:1 | NonCompanion | test.kt:45:16:45:58 | setPropWithStaticSetter | Method |
|
||||
#select
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
| test.kt:4:15:4:26 | println(...) | file://<external>/ConsoleKt.class:0:0:0:0 | println |
|
||||
| test.kt:9:9:9:13 | getTest0$private(...) | test.kt:2:22:2:30 | getTest0$private |
|
||||
| test.kt:9:9:9:13 | getTest0$private(...) | test.kt:2:22:2:40 | getTest0$private |
|
||||
| test.kt:9:9:9:17 | f(...) | test.kt:4:5:4:26 | f |
|
||||
| test.kt:10:13:10:23 | get(...) | test.kt:10:13:10:23 | get |
|
||||
| test.kt:10:13:10:23 | getTest0$private(...) | test.kt:2:22:2:30 | getTest0$private |
|
||||
| test.kt:10:13:10:23 | setTest0$private(...) | test.kt:2:22:2:30 | setTest0$private |
|
||||
| test.kt:10:13:10:23 | getTest0$private(...) | test.kt:2:22:2:40 | getTest0$private |
|
||||
| test.kt:10:13:10:23 | setTest0$private(...) | test.kt:2:22:2:40 | setTest0$private |
|
||||
| test.kt:10:13:10:37 | isInitialized(...) | file://<external>/LateinitKt.class:0:0:0:0 | isInitialized |
|
||||
| test.kt:14:9:14:17 | f(...) | test.kt:4:5:4:26 | f |
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
| clinit.kt:3:1:3:15 | Unit | TypeAccess |
|
||||
| clinit.kt:3:1:3:15 | int | TypeAccess |
|
||||
| clinit.kt:3:1:3:15 | int | TypeAccess |
|
||||
| clinit.kt:3:1:3:20 | Unit | TypeAccess |
|
||||
| clinit.kt:3:1:3:20 | int | TypeAccess |
|
||||
| clinit.kt:3:1:3:20 | int | TypeAccess |
|
||||
| clinit.kt:3:1:3:24 | ...=... | AssignExpr |
|
||||
| clinit.kt:3:1:3:24 | ...=... | KtInitializerAssignExpr |
|
||||
| clinit.kt:3:1:3:24 | <set-?> | VarAccess |
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
methods
|
||||
| clinit.kt:0:0:0:0 | ClinitKt | clinit.kt:0:0:0:0 | <clinit> | <clinit>() | static | Compiler generated |
|
||||
| clinit.kt:0:0:0:0 | ClinitKt | clinit.kt:3:1:3:15 | getTopLevelInt | getTopLevelInt() | final, public, static | Compiler generated |
|
||||
| clinit.kt:0:0:0:0 | ClinitKt | clinit.kt:3:1:3:15 | setTopLevelInt | setTopLevelInt(int) | final, public, static | Compiler generated |
|
||||
| clinit.kt:0:0:0:0 | ClinitKt | clinit.kt:3:1:3:20 | getTopLevelInt | getTopLevelInt() | final, public, static | Compiler generated |
|
||||
| clinit.kt:0:0:0:0 | ClinitKt | clinit.kt:3:1:3:20 | setTopLevelInt | setTopLevelInt(int) | final, public, static | Compiler generated |
|
||||
| dataClass.kt:1:1:1:47 | DataClass | dataClass.kt:0:0:0:0 | component1 | component1() | final, public | Compiler generated |
|
||||
| dataClass.kt:1:1:1:47 | DataClass | dataClass.kt:0:0:0:0 | component2 | component2() | final, public | Compiler generated |
|
||||
| dataClass.kt:1:1:1:47 | DataClass | dataClass.kt:0:0:0:0 | copy | copy(int,java.lang.String) | final, public | Compiler generated |
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
| clinit.kt:3:1:3:15 | setTopLevelInt | clinit.kt:3:1:3:15 | <set-?> | 0 |
|
||||
| clinit.kt:3:1:3:20 | setTopLevelInt | clinit.kt:3:1:3:20 | <set-?> | 0 |
|
||||
| dataClass.kt:0:0:0:0 | copy | dataClass.kt:1:22:1:31 | x | 0 |
|
||||
| dataClass.kt:0:0:0:0 | copy | dataClass.kt:1:34:1:46 | y | 1 |
|
||||
| dataClass.kt:0:0:0:0 | copy$default | dataClass.kt:0:0:0:0 | p0 | 0 |
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
| modifiers.kt:7:5:9:5 | Nested | Class | final |
|
||||
| modifiers.kt:7:5:9:5 | Nested | Class | protected |
|
||||
| modifiers.kt:7:15:9:5 | Nested | Constructor | public |
|
||||
| modifiers.kt:8:16:8:20 | getE | Method | final |
|
||||
| modifiers.kt:8:16:8:20 | getE | Method | public |
|
||||
| modifiers.kt:8:16:8:25 | getE | Method | final |
|
||||
| modifiers.kt:8:16:8:25 | getE | Method | public |
|
||||
| modifiers.kt:8:16:8:29 | e | Field | final |
|
||||
| modifiers.kt:8:16:8:29 | e | Field | private |
|
||||
| modifiers.kt:8:16:8:29 | e | Property | public |
|
||||
@@ -75,10 +75,10 @@
|
||||
| modifiers.kt:35:1:41:1 | LateInit | Class | final |
|
||||
| modifiers.kt:35:1:41:1 | LateInit | Class | public |
|
||||
| modifiers.kt:35:8:41:1 | LateInit | Constructor | public |
|
||||
| modifiers.kt:36:22:36:30 | getTest0$private | Method | final |
|
||||
| modifiers.kt:36:22:36:30 | getTest0$private | Method | private |
|
||||
| modifiers.kt:36:22:36:30 | setTest0$private | Method | final |
|
||||
| modifiers.kt:36:22:36:30 | setTest0$private | Method | private |
|
||||
| modifiers.kt:36:22:36:40 | getTest0$private | Method | final |
|
||||
| modifiers.kt:36:22:36:40 | getTest0$private | Method | private |
|
||||
| modifiers.kt:36:22:36:40 | setTest0$private | Method | final |
|
||||
| modifiers.kt:36:22:36:40 | setTest0$private | Method | private |
|
||||
| modifiers.kt:36:22:36:40 | test0 | Field | private |
|
||||
| modifiers.kt:36:22:36:40 | test0 | Property | lateinit |
|
||||
| modifiers.kt:36:22:36:40 | test0 | Property | private |
|
||||
|
||||
@@ -11,11 +11,11 @@
|
||||
| file:///!unknown-binary-location/A.class:0:0:0:0 | A<String> | file:///!unknown-binary-location/A.class:0:0:0:0 | getPrivateAnonType$private |
|
||||
| file:///!unknown-binary-location/A.class:0:0:0:0 | A<String> | file:///!unknown-binary-location/A.class:0:0:0:0 | privateUser |
|
||||
| file:///!unknown-binary-location/A.class:0:0:0:0 | A<String> | test.kt:9:3:9:14 | getAnonType |
|
||||
| file:///!unknown-binary-location/If.class:0:0:0:0 | If<String> | test.kt:3:3:3:7 | getX |
|
||||
| file:///!unknown-binary-location/If.class:0:0:0:0 | If<T> | test.kt:3:3:3:7 | getX |
|
||||
| file:///!unknown-binary-location/If.class:0:0:0:0 | If<String> | test.kt:3:3:3:11 | getX |
|
||||
| file:///!unknown-binary-location/If.class:0:0:0:0 | If<T> | test.kt:3:3:3:11 | getX |
|
||||
| other.kt:1:1:1:34 | Ext | other.kt:1:1:1:34 | Ext |
|
||||
| test.kt:0:0:0:0 | TestKt | test.kt:24:1:24:38 | user |
|
||||
| test.kt:1:1:5:1 | If | test.kt:3:3:3:7 | getX |
|
||||
| test.kt:1:1:5:1 | If | test.kt:3:3:3:11 | getX |
|
||||
| test.kt:7:1:22:1 | A | test.kt:7:16:7:21 | A |
|
||||
| test.kt:7:1:22:1 | A | test.kt:9:3:9:14 | getAnonType |
|
||||
| test.kt:7:1:22:1 | A | test.kt:9:3:11:3 | anonType |
|
||||
|
||||
@@ -3,21 +3,21 @@
|
||||
| properties.kt:2:53:2:83 | mutableConstructorProp | properties.kt:2:53:2:83 | getMutableConstructorProp | properties.kt:2:53:2:83 | setMutableConstructorProp | properties.kt:2:53:2:83 | mutableConstructorProp | public |
|
||||
| properties.kt:3:5:3:25 | modifiableInt | properties.kt:3:5:3:21 | getModifiableInt | properties.kt:3:5:3:21 | setModifiableInt | properties.kt:3:5:3:25 | modifiableInt | public |
|
||||
| properties.kt:4:5:4:24 | immutableInt | properties.kt:4:5:4:20 | getImmutableInt | file://:0:0:0:0 | <none> | properties.kt:4:5:4:24 | immutableInt | public |
|
||||
| properties.kt:5:5:5:26 | typedProp | properties.kt:5:5:5:17 | getTypedProp | file://:0:0:0:0 | <none> | properties.kt:5:5:5:26 | typedProp | public |
|
||||
| properties.kt:6:14:6:38 | abstractTypeProp | properties.kt:6:14:6:33 | getAbstractTypeProp | file://:0:0:0:0 | <none> | file://:0:0:0:0 | <none> | public |
|
||||
| properties.kt:7:5:7:30 | initialisedInInit | properties.kt:7:5:7:25 | getInitialisedInInit | file://:0:0:0:0 | <none> | properties.kt:7:5:7:30 | initialisedInInit | public |
|
||||
| properties.kt:5:5:5:26 | typedProp | properties.kt:5:5:5:22 | getTypedProp | file://:0:0:0:0 | <none> | properties.kt:5:5:5:26 | typedProp | public |
|
||||
| properties.kt:6:14:6:38 | abstractTypeProp | properties.kt:6:14:6:38 | getAbstractTypeProp | file://:0:0:0:0 | <none> | file://:0:0:0:0 | <none> | public |
|
||||
| properties.kt:7:5:7:30 | initialisedInInit | properties.kt:7:5:7:30 | getInitialisedInInit | file://:0:0:0:0 | <none> | properties.kt:7:5:7:30 | initialisedInInit | public |
|
||||
| properties.kt:11:5:11:40 | useConstructorArg | properties.kt:11:5:11:25 | getUseConstructorArg | file://:0:0:0:0 | <none> | properties.kt:11:5:11:40 | useConstructorArg | public |
|
||||
| properties.kt:12:5:13:21 | five | properties.kt:13:13:13:21 | getFive | file://:0:0:0:0 | <none> | file://:0:0:0:0 | <none> | public |
|
||||
| properties.kt:14:5:15:21 | six | properties.kt:15:13:15:21 | getSix | file://:0:0:0:0 | <none> | file://:0:0:0:0 | <none> | public |
|
||||
| properties.kt:16:5:18:40 | getSet | properties.kt:17:13:17:33 | getGetSet | properties.kt:18:13:18:40 | setGetSet | file://:0:0:0:0 | <none> | public |
|
||||
| properties.kt:19:5:20:15 | defaultGetter | properties.kt:19:5:19:21 | getDefaultGetter | file://:0:0:0:0 | <none> | properties.kt:19:5:20:15 | defaultGetter | public |
|
||||
| properties.kt:21:5:22:15 | varDefaultGetter | properties.kt:21:5:21:24 | getVarDefaultGetter | properties.kt:21:5:21:24 | setVarDefaultGetter | properties.kt:21:5:22:15 | varDefaultGetter | public |
|
||||
| properties.kt:23:5:24:15 | varDefaultSetter | properties.kt:23:5:23:24 | getVarDefaultSetter | properties.kt:23:5:23:24 | setVarDefaultSetter | properties.kt:23:5:24:15 | varDefaultSetter | public |
|
||||
| properties.kt:25:5:27:15 | varDefaultGetterSetter | properties.kt:25:5:25:30 | getVarDefaultGetterSetter | properties.kt:25:5:25:30 | setVarDefaultGetterSetter | properties.kt:25:5:27:15 | varDefaultGetterSetter | public |
|
||||
| properties.kt:19:5:20:15 | defaultGetter | properties.kt:20:13:20:15 | getDefaultGetter | file://:0:0:0:0 | <none> | properties.kt:19:5:20:15 | defaultGetter | public |
|
||||
| properties.kt:21:5:22:15 | varDefaultGetter | properties.kt:22:13:22:15 | getVarDefaultGetter | properties.kt:21:5:21:24 | setVarDefaultGetter | properties.kt:21:5:22:15 | varDefaultGetter | public |
|
||||
| properties.kt:23:5:24:15 | varDefaultSetter | properties.kt:23:5:23:24 | getVarDefaultSetter | properties.kt:24:13:24:15 | setVarDefaultSetter | properties.kt:23:5:24:15 | varDefaultSetter | public |
|
||||
| properties.kt:25:5:27:15 | varDefaultGetterSetter | properties.kt:26:13:26:15 | getVarDefaultGetterSetter | properties.kt:27:13:27:15 | setVarDefaultGetterSetter | properties.kt:25:5:27:15 | varDefaultGetterSetter | public |
|
||||
| properties.kt:28:5:29:22 | overrideGetter | properties.kt:29:13:29:22 | getOverrideGetter | properties.kt:28:5:28:22 | setOverrideGetter | properties.kt:28:5:29:22 | overrideGetter | public |
|
||||
| properties.kt:30:5:31:29 | overrideGetterUseField | properties.kt:31:13:31:29 | getOverrideGetterUseField | properties.kt:30:5:30:30 | setOverrideGetterUseField | properties.kt:30:5:31:29 | overrideGetterUseField | public |
|
||||
| properties.kt:32:5:33:29 | useField | properties.kt:33:13:33:29 | getUseField | file://:0:0:0:0 | <none> | properties.kt:32:5:33:29 | useField | public |
|
||||
| properties.kt:34:14:34:36 | lateInitVar | properties.kt:34:14:34:28 | getLateInitVar | properties.kt:34:14:34:28 | setLateInitVar | properties.kt:34:14:34:36 | lateInitVar | lateinit, public |
|
||||
| properties.kt:34:14:34:36 | lateInitVar | properties.kt:34:14:34:36 | getLateInitVar | properties.kt:34:14:34:36 | setLateInitVar | properties.kt:34:14:34:36 | lateInitVar | lateinit, public |
|
||||
| properties.kt:35:13:35:32 | privateProp | properties.kt:35:13:35:27 | getPrivateProp$private | file://:0:0:0:0 | <none> | properties.kt:35:13:35:32 | privateProp | private |
|
||||
| properties.kt:36:15:36:36 | protectedProp | properties.kt:36:15:36:31 | getProtectedProp | file://:0:0:0:0 | <none> | properties.kt:36:15:36:36 | protectedProp | protected |
|
||||
| properties.kt:37:12:37:30 | publicProp | properties.kt:37:12:37:25 | getPublicProp | file://:0:0:0:0 | <none> | properties.kt:37:12:37:30 | publicProp | public |
|
||||
@@ -26,8 +26,8 @@
|
||||
| properties.kt:70:5:70:16 | prop | properties.kt:70:5:70:12 | getProp | file://:0:0:0:0 | <none> | properties.kt:70:5:70:16 | prop | public |
|
||||
| properties.kt:78:1:79:13 | x | properties.kt:79:5:79:13 | getX | file://:0:0:0:0 | <none> | file://:0:0:0:0 | <none> | public |
|
||||
| properties.kt:80:1:81:13 | x | properties.kt:81:5:81:13 | getX | file://:0:0:0:0 | <none> | file://:0:0:0:0 | <none> | public |
|
||||
| properties.kt:84:13:84:29 | data | properties.kt:84:13:84:20 | getData$private | properties.kt:84:13:84:20 | setData$private | properties.kt:84:13:84:29 | data | private |
|
||||
| properties.kt:92:13:93:18 | data | properties.kt:93:9:93:18 | getData | properties.kt:92:13:92:20 | setData$private | properties.kt:92:13:93:18 | data | private |
|
||||
| properties.kt:84:13:84:29 | data | properties.kt:84:13:84:25 | getData$private | properties.kt:84:13:84:25 | setData$private | properties.kt:84:13:84:29 | data | private |
|
||||
| properties.kt:92:13:93:18 | data | properties.kt:93:9:93:18 | getData | properties.kt:92:13:92:25 | setData$private | properties.kt:92:13:93:18 | data | private |
|
||||
fieldDeclarations
|
||||
| properties.kt:2:27:2:50 | int constructorProp; | properties.kt:2:27:2:50 | constructorProp | 0 |
|
||||
| properties.kt:2:53:2:83 | int mutableConstructorProp; | properties.kt:2:53:2:83 | mutableConstructorProp | 0 |
|
||||
|
||||
@@ -59,10 +59,10 @@ functionReferences
|
||||
| reflection.kt:154:33:154:61 | ...::... | reflection.kt:154:33:154:61 | invoke | reflection.kt:154:33:154:61 | extTakesOptionalParam |
|
||||
| reflection.kt:162:25:162:45 | ...::... | reflection.kt:162:25:162:45 | invoke | reflection.kt:162:25:162:45 | <init> |
|
||||
propertyGetReferences
|
||||
| reflection.kt:10:38:10:42 | ...::... | reflection.kt:10:38:10:42 | get | reflection.kt:33:9:33:14 | getP0 |
|
||||
| reflection.kt:15:35:15:41 | ...::... | reflection.kt:15:35:15:41 | get | reflection.kt:33:9:33:14 | getP0 |
|
||||
| reflection.kt:17:45:17:49 | ...::... | reflection.kt:17:45:17:49 | get | reflection.kt:34:9:34:14 | getP1 |
|
||||
| reflection.kt:22:42:22:48 | ...::... | reflection.kt:22:42:22:48 | get | reflection.kt:34:9:34:14 | getP1 |
|
||||
| reflection.kt:10:38:10:42 | ...::... | reflection.kt:10:38:10:42 | get | reflection.kt:33:9:33:19 | getP0 |
|
||||
| reflection.kt:15:35:15:41 | ...::... | reflection.kt:15:35:15:41 | get | reflection.kt:33:9:33:19 | getP0 |
|
||||
| reflection.kt:17:45:17:49 | ...::... | reflection.kt:17:45:17:49 | get | reflection.kt:34:9:34:19 | getP1 |
|
||||
| reflection.kt:22:42:22:48 | ...::... | reflection.kt:22:42:22:48 | get | reflection.kt:34:9:34:19 | getP1 |
|
||||
| reflection.kt:50:13:50:28 | ...::... | reflection.kt:50:13:50:28 | get | reflection.kt:47:5:47:28 | getLastChar |
|
||||
| reflection.kt:51:13:51:28 | ...::... | reflection.kt:51:13:51:28 | get | reflection.kt:47:5:47:28 | getLastChar |
|
||||
| reflection.kt:67:17:67:32 | ...::... | reflection.kt:67:17:67:32 | get | file://<external>/Class1$Generic.class:0:0:0:0 | getP2 |
|
||||
@@ -73,8 +73,8 @@ propertyFieldReferences
|
||||
| reflection.kt:71:17:71:34 | ...::... | reflection.kt:71:17:71:34 | get | file:///modules/java.base/java/lang/Integer.class:0:0:0:0 | MAX_VALUE |
|
||||
| reflection.kt:72:17:72:35 | ...::... | reflection.kt:72:17:72:35 | get | file:///modules/java.desktop/java/awt/Rectangle.class:0:0:0:0 | height |
|
||||
propertySetReferences
|
||||
| reflection.kt:17:45:17:49 | ...::... | reflection.kt:17:45:17:49 | set | reflection.kt:34:9:34:14 | setP1 |
|
||||
| reflection.kt:22:42:22:48 | ...::... | reflection.kt:22:42:22:48 | set | reflection.kt:34:9:34:14 | setP1 |
|
||||
| reflection.kt:17:45:17:49 | ...::... | reflection.kt:17:45:17:49 | set | reflection.kt:34:9:34:19 | setP1 |
|
||||
| reflection.kt:22:42:22:48 | ...::... | reflection.kt:22:42:22:48 | set | reflection.kt:34:9:34:19 | setP1 |
|
||||
| reflection.kt:67:17:67:32 | ...::... | reflection.kt:67:17:67:32 | set | file://<external>/Class1$Generic.class:0:0:0:0 | setP2 |
|
||||
| reflection.kt:68:17:68:34 | ...::... | reflection.kt:68:17:68:34 | set | file://<external>/Class1$Generic.class:0:0:0:0 | setP2 |
|
||||
| reflection.kt:109:17:109:27 | ...::... | reflection.kt:109:17:109:27 | set | reflection.kt:105:18:105:31 | setProp1 |
|
||||
@@ -299,9 +299,9 @@ compGenerated
|
||||
| reflection.kt:21:44:21:50 | new Function2<C,Integer,Unit>(...) { ... } | The class around a local function, a lambda, or a function reference |
|
||||
| reflection.kt:22:42:22:48 | new KMutableProperty0<Integer>(...) { ... } | The class around a local function, a lambda, or a function reference |
|
||||
| reflection.kt:24:46:24:64 | new Function1<KCallable<?>,Boolean>(...) { ... } | The class around a local function, a lambda, or a function reference |
|
||||
| reflection.kt:33:9:33:14 | getP0 | Default property accessor |
|
||||
| reflection.kt:34:9:34:14 | getP1 | Default property accessor |
|
||||
| reflection.kt:34:9:34:14 | setP1 | Default property accessor |
|
||||
| reflection.kt:33:9:33:19 | getP0 | Default property accessor |
|
||||
| reflection.kt:34:9:34:19 | getP1 | Default property accessor |
|
||||
| reflection.kt:34:9:34:19 | setP1 | Default property accessor |
|
||||
| reflection.kt:50:13:50:28 | new KProperty1<String,Character>(...) { ... } | The class around a local function, a lambda, or a function reference |
|
||||
| reflection.kt:51:13:51:28 | new KProperty0<Character>(...) { ... } | The class around a local function, a lambda, or a function reference |
|
||||
| reflection.kt:60:17:60:32 | new Function2<Generic<Integer>,Integer,String>(...) { ... } | The class around a local function, a lambda, or a function reference |
|
||||
|
||||
Reference in New Issue
Block a user