Add test case for local class declaration in field initializer

This commit is contained in:
Tamas Vajk
2022-05-05 12:45:02 +02:00
committed by Chris Smowton
parent 4ceb2f13c4
commit 394ec56d9d
7 changed files with 2734 additions and 832 deletions

View File

@@ -0,0 +1,20 @@
[INVALID_KEY_SET] predicate isLocalClassOrInterface(@classorinterface typeid, @localtypedeclstmt parent): The key set {typeid} does not functionally determine all fields.
Here is a pair of tuples that agree on the key set but differ at index 1:
Tuple 1 in row 13: (1044,1050)
Tuple 2 in row 14: (1044,1075)
Relevant element: Tuple 1: typeid=1044
Full ID for 1044: @"class;L"
Relevant element: Tuple 2: typeid=1044
Full ID for 1044: @"class;L"
[INVALID_KEY_SET] predicate stmts(@stmt id, int kind, @stmtparent parent, int idx, @callable bodydecl): The key set {parent, idx} does not functionally determine all fields.
Here is a pair of tuples that agree on the key set but differ at index 0:
Tuple 1 in row 223: (1047,0,1046,0,1046)
Tuple 2 in row 233: (1072,0,1046,0,1046)
Relevant element: Tuple 1: parent=1046
Full ID for 1046: @"callable;(1044).<init>()(17)". The ID may expand to @"callable;{@"class;L"}.<init>(){@"type;void"}"
Relevant element: Tuple 2: parent=1046
Full ID for 1046: @"callable;(1044).<init>()(17)". The ID may expand to @"callable;{@"class;L"}.<init>(){@"type;void"}"
Relevant element: Tuple 1: bodydecl=1046
Full ID for 1046: @"callable;(1044).<init>()(17)". The ID may expand to @"callable;{@"class;L"}.<init>(){@"type;void"}"
Relevant element: Tuple 2: bodydecl=1046
Full ID for 1046: @"callable;(1044).<init>()(17)". The ID may expand to @"callable;{@"class;L"}.<init>(){@"type;void"}"

File diff suppressed because it is too large Load Diff

View File

@@ -37,6 +37,9 @@
| generic_anonymous.kt:0:0:0:0 | Generic_anonymousKt | Generic_anonymousKt | final, public |
| generic_anonymous.kt:1:1:9:1 | Generic | Generic | final, private |
| generic_anonymous.kt:3:19:5:3 | new Object(...) { ... } | <anonymous class> | final, private |
| localClassField.kt:1:1:11:1 | A | A | final, public |
| localClassField.kt:3:9:3:19 | L | A$L | final, private |
| localClassField.kt:8:9:8:19 | L | A$L | final, private |
| local_anonymous.kt:3:1:36:1 | Class1 | LocalAnonymous.Class1 | final, public |
| local_anonymous.kt:5:16:7:9 | new Object(...) { ... } | <anonymous class> | final, private |
| local_anonymous.kt:11:9:11:24 | | Class1$ | final, private |

View File

@@ -36,6 +36,9 @@ superCall
| classes.kt:129:17:131:17 | super(...) |
| generic_anonymous.kt:1:1:9:1 | super(...) |
| generic_anonymous.kt:3:19:5:3 | super(...) |
| localClassField.kt:1:1:11:1 | super(...) |
| localClassField.kt:3:9:3:19 | super(...) |
| localClassField.kt:8:9:8:19 | super(...) |
| local_anonymous.kt:3:1:36:1 | super(...) |
| local_anonymous.kt:5:16:7:9 | super(...) |
| local_anonymous.kt:11:9:11:24 | super(...) |

View File

@@ -2,5 +2,9 @@
| classes.kt:118:9:123:9 | class ... | classes.kt:118:9:123:9 | | classes.kt:117:5:124:5 | fn2 | classes.kt:109:1:136:1 | C1 |
| classes.kt:119:13:121:13 | class ... | classes.kt:119:13:121:13 | Local2 | classes.kt:118:9:123:9 | localFn | classes.kt:109:1:136:1 | C1 |
| classes.kt:129:17:131:17 | class ... | classes.kt:129:17:131:17 | Local3 | classes.kt:128:13:133:13 | fn | classes.kt:127:16:134:9 | new Object(...) { ... } |
| localClassField.kt:3:9:3:19 | class ... | localClassField.kt:3:9:3:19 | L | localClassField.kt:1:1:11:1 | A | localClassField.kt:1:1:11:1 | A |
| localClassField.kt:3:9:3:19 | class ... | localClassField.kt:8:9:8:19 | L | localClassField.kt:1:1:11:1 | A | localClassField.kt:1:1:11:1 | A |
| localClassField.kt:8:9:8:19 | class ... | localClassField.kt:3:9:3:19 | L | localClassField.kt:1:1:11:1 | A | localClassField.kt:1:1:11:1 | A |
| localClassField.kt:8:9:8:19 | class ... | localClassField.kt:8:9:8:19 | L | localClassField.kt:1:1:11:1 | A | localClassField.kt:1:1:11:1 | A |
| local_anonymous.kt:11:9:11:24 | class ... | local_anonymous.kt:11:9:11:24 | | local_anonymous.kt:10:5:13:5 | fn2 | local_anonymous.kt:3:1:36:1 | Class1 |
| local_anonymous.kt:25:9:25:27 | class ... | local_anonymous.kt:25:9:25:27 | LocalClass | local_anonymous.kt:24:5:27:5 | fn5 | local_anonymous.kt:3:1:36:1 | Class1 |

View File

@@ -0,0 +1,11 @@
class A {
val x = if (true) {
class L { }
L()
} else {}
val y = if (true) {
class L { }
L()
} else {}
}

View File

@@ -49,6 +49,9 @@
| file://<external>/SuperChain2.class:0:0:0:0 | SuperChain2<T5,String> | file://<external>/SuperChain1.class:0:0:0:0 | SuperChain1<T5,String> |
| generic_anonymous.kt:1:1:9:1 | Generic | file://<external>/Object.class:0:0:0:0 | Object |
| generic_anonymous.kt:3:19:5:3 | new Object(...) { ... } | file://<external>/Object.class:0:0:0:0 | Object |
| localClassField.kt:1:1:11:1 | A | file://<external>/Object.class:0:0:0:0 | Object |
| localClassField.kt:3:9:3:19 | L | file://<external>/Object.class:0:0:0:0 | Object |
| localClassField.kt:8:9:8:19 | L | file://<external>/Object.class:0:0:0:0 | Object |
| local_anonymous.kt:3:1:36:1 | Class1 | file://<external>/Object.class:0:0:0:0 | Object |
| local_anonymous.kt:5:16:7:9 | new Object(...) { ... } | file://<external>/Object.class:0:0:0:0 | Object |
| local_anonymous.kt:11:9:11:24 | | file://<external>/Object.class:0:0:0:0 | Object |