Do not extract local function containers as anonymous classes

This commit is contained in:
Tamas Vajk
2022-03-09 09:16:43 +01:00
committed by Ian Lynagh
parent 9597932112
commit 2d0bb43efe
11 changed files with 14 additions and 22 deletions

View File

@@ -412,7 +412,7 @@ local_anonymous.kt:
# 10| 3: [Method] fn2
# 10| 5: [BlockStmt] { ... }
# 11| 0: [LocalTypeDeclStmt] class ...
# 11| 0: [AnonymousClass,LocalClass] new Object(...) { ... }
# 11| 0: [LocalClass]
# 11| 1: [Constructor]
# 11| 5: [BlockStmt] { ... }
# 11| 0: [SuperConstructorInvocationStmt] super(...)

View File

@@ -7,4 +7,3 @@
| classes.kt:89:16:89:44 | new Interface3<Integer>(...) { ... } | classes.kt:89:16:89:44 | new (...) | | classes.kt:89:16:89:44 | Interface3<Integer> | classes.kt:89:16:89:44 | class ... |
| classes.kt:127:16:134:9 | new Object(...) { ... } | classes.kt:127:16:134:9 | new (...) | | classes.kt:127:16:134:9 | Object | classes.kt:127:16:134:9 | class ... |
| local_anonymous.kt:5:16:7:9 | new Object(...) { ... } | local_anonymous.kt:5:16:7:9 | new (...) | | local_anonymous.kt:5:16:7:9 | Object | local_anonymous.kt:5:16:7:9 | class ... |
| local_anonymous.kt:11:9:11:24 | new Object(...) { ... } | local_anonymous.kt:12:9:12:17 | new (...) | | local_anonymous.kt:12:9:12:17 | Object | local_anonymous.kt:11:9:11:24 | class ... |

View File

@@ -36,7 +36,7 @@
| classes.kt:129:17:131:17 | Local3 | C1$$Local3 | final, private |
| local_anonymous.kt:3:1:28: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 | new Object(...) { ... } | <anonymous class> | final, private |
| local_anonymous.kt:11:9:11:24 | | Class1$ | final, private |
| local_anonymous.kt:16:23:16:49 | new Function2<Integer,Integer,Integer>(...) { ... } | <anonymous class> | final, private |
| local_anonymous.kt:17:23:17:49 | new Function2<Integer,Integer,Integer>(...) { ... } | <anonymous class> | final, private |
| local_anonymous.kt:21:21:21:31 | new Function1<Class1,Unit>(...) { ... } | <anonymous class> | final, private |

View File

@@ -2,4 +2,5 @@
| 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(...) { ... } |
| 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:28: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:28:1 | Class1 |

View File

@@ -1,11 +1,12 @@
anonymousObjects
| local_anonymous.kt:5:16:7:9 | new (...) | local_anonymous.kt:5:16:7:9 | new Object(...) { ... } | anonymous | local |
localFunctions
| local_anonymous.kt:11:9:11:24 | fnLocal | local_anonymous.kt:11:9:11:24 | new Object(...) { ... } | anonymous | local |
| local_anonymous.kt:11:9:11:24 | fnLocal | local_anonymous.kt:11:9:11:24 | | not anonymous | local |
lambdas
| local_anonymous.kt:16:23:16:49 | ...->... | local_anonymous.kt:16:23:16:49 | new Function2<Integer,Integer,Integer>(...) { ... } | anonymous | not local |
| local_anonymous.kt:17:23:17:49 | ...->... | local_anonymous.kt:17:23:17:49 | new Function2<Integer,Integer,Integer>(...) { ... } | anonymous | not local |
memberRefs
| local_anonymous.kt:21:21:21:31 | ...::... | local_anonymous.kt:21:21:21:31 | new Function1<Class1,Unit>(...) { ... } | anonymous | not local |
localClasses
| local_anonymous.kt:11:9:11:24 | | not anonymous | local |
| local_anonymous.kt:25:9:25:27 | LocalClass | not anonymous | local |

View File

@@ -44,7 +44,7 @@
| classes.kt:129:17:131:17 | Local3<Integer> | file://<external>/Object.class:0:0:0:0 | Object |
| local_anonymous.kt:3:1:28: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 | 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 |
| local_anonymous.kt:16:23:16:49 | new Function2<Integer,Integer,Integer>(...) { ... } | file://<external>/Function2.class:0:0:0:0 | Function2<Integer,Integer,Integer> |
| local_anonymous.kt:16:23:16:49 | new Function2<Integer,Integer,Integer>(...) { ... } | file://<external>/Object.class:0:0:0:0 | Object |
| local_anonymous.kt:17:23:17:49 | new Function2<Integer,Integer,Integer>(...) { ... } | file://<external>/Function2.class:0:0:0:0 | Function2<Integer,Integer,Integer> |

View File

@@ -1,4 +0,0 @@
[INVALID_KEY_SET] predicate isAnonymClass(@class classid, @classinstancexpr parent): The key set {classid} 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 28: (3797,3825)
Tuple 2 in row 29: (3797,3842)

View File

@@ -2282,7 +2282,7 @@ localFunctionCalls.kt:
# 4| 1: [LocalVariableDeclExpr] x
# 4| 0: [IntegerLiteral] 5
# 5| 1: [LocalTypeDeclStmt] class ...
# 5| 0: [AnonymousClass,LocalClass] new Object(...) { ... }
# 5| 0: [LocalClass]
# 5| 1: [Constructor]
# 5| 5: [BlockStmt] { ... }
# 5| 0: [SuperConstructorInvocationStmt] super(...)
@@ -2313,7 +2313,7 @@ localFunctionCalls.kt:
# 8| 0: [VarAccess] x
# 8| 1: [IntegerLiteral] 7
# 9| 5: [LocalTypeDeclStmt] class ...
# 9| 0: [AnonymousClass,LocalClass] new Object(...) { ... }
# 9| 0: [LocalClass]
# 9| 1: [Constructor]
# 9| 5: [BlockStmt] { ... }
# 9| 0: [SuperConstructorInvocationStmt] super(...)

View File

@@ -5,8 +5,8 @@ methods
| methods3.kt:5:1:7:1 | Class3 | methods3.kt:6:5:6:46 | fooBarTopLevelMethodExt | fooBarTopLevelMethodExt(int,int) | public |
| methods4.kt:5:3:9:3 | InsideNestedTest | methods4.kt:7:5:7:34 | m | m(foo.bar.NestedTest.InsideNestedTest) | public |
| methods5.kt:0:0:0:0 | Methods5Kt | methods5.kt:3:1:11:1 | x | x() | public |
| methods5.kt:5:3:5:27 | new Object(...) { ... } | methods5.kt:5:3:5:27 | a | a(int) | public |
| methods5.kt:9:3:9:32 | new Object(...) { ... } | methods5.kt:9:3:9:32 | f1 | f1(foo.bar.C1,int) | public |
| methods5.kt:5:3:5:27 | | methods5.kt:5:3:5:27 | a | a(int) | public |
| methods5.kt:9:3:9:32 | | methods5.kt:9:3:9:32 | f1 | f1(foo.bar.C1,int) | public |
| methods.kt:0:0:0:0 | MethodsKt | methods.kt:2:1:3:1 | topLevelMethod | topLevelMethod(int,int) | public |
| methods.kt:5:1:19:1 | Class | methods.kt:6:5:7:5 | classMethod | classMethod(int,int) | public |
| methods.kt:5:1:19:1 | Class | methods.kt:9:5:12:5 | anotherClassMethod | anotherClassMethod(int,int) | public |
@@ -20,8 +20,8 @@ constructors
| methods3.kt:5:1:7:1 | Class3 | methods3.kt:5:1:7:1 | Class3 | Class3() |
| methods4.kt:3:1:11:1 | NestedTest | methods4.kt:3:1:11:1 | NestedTest | NestedTest() |
| methods4.kt:5:3:9:3 | InsideNestedTest | methods4.kt:5:3:9:3 | InsideNestedTest | InsideNestedTest() |
| methods5.kt:5:3:5:27 | new Object(...) { ... } | methods5.kt:5:3:5:27 | | |
| methods5.kt:9:3:9:32 | new Object(...) { ... } | methods5.kt:9:3:9:32 | | |
| methods5.kt:5:3:5:27 | | methods5.kt:5:3:5:27 | | |
| methods5.kt:9:3:9:32 | | methods5.kt:9:3:9:32 | | |
| methods5.kt:13:1:13:14 | C1 | methods5.kt:13:1:13:14 | C1 | C1() |
| methods5.kt:13:1:13:14 | C1<Integer> | methods5.kt:13:1:13:14 | C1<Integer> | C1<Integer>() |
| methods.kt:5:1:19:1 | Class | methods.kt:5:1:19:1 | Class | Class() |

View File

@@ -27,11 +27,9 @@
| modifiers.kt:13:13:13:23 | fn | Method | public |
| modifiers.kt:17:5:20:5 | fn2 | Method | public |
| modifiers.kt:18:9:18:24 | | Constructor | public |
| modifiers.kt:18:9:18:24 | | LocalClass | final |
| modifiers.kt:18:9:18:24 | | LocalClass | private |
| modifiers.kt:18:9:18:24 | fnLocal | Method | public |
| modifiers.kt:18:9:18:24 | new Object(...) { ... } | AnonymousClass | final |
| modifiers.kt:18:9:18:24 | new Object(...) { ... } | AnonymousClass | private |
| modifiers.kt:18:9:18:24 | new Object(...) { ... } | LocalClass | final |
| modifiers.kt:18:9:18:24 | new Object(...) { ... } | LocalClass | private |
| modifiers.kt:22:5:24:5 | fn3 | Method | public |
| modifiers.kt:23:9:23:27 | localClass | Constructor | public |
| modifiers.kt:23:9:23:27 | localClass | LocalClass | final |