Fix for KT-9855: java.lang.IllegalAccessError when using private package level operator method
#KT-9855 Fixed
This commit is contained in:
@@ -3156,7 +3156,7 @@ public class ExpressionCodegen extends KtVisitor<StackValue, StackValue> impleme
|
|||||||
|
|
||||||
private StackValue generateAugmentedAssignment(KtBinaryExpression expression) {
|
private StackValue generateAugmentedAssignment(KtBinaryExpression expression) {
|
||||||
ResolvedCall<?> resolvedCall = CallUtilKt.getResolvedCallWithAssert(expression, bindingContext);
|
ResolvedCall<?> resolvedCall = CallUtilKt.getResolvedCallWithAssert(expression, bindingContext);
|
||||||
FunctionDescriptor descriptor = (FunctionDescriptor) resolvedCall.getResultingDescriptor();
|
FunctionDescriptor descriptor = accessibleFunctionDescriptor(resolvedCall);
|
||||||
Callable callable = resolveToCallable(descriptor, false, resolvedCall);
|
Callable callable = resolveToCallable(descriptor, false, resolvedCall);
|
||||||
KtExpression lhs = expression.getLeft();
|
KtExpression lhs = expression.getLeft();
|
||||||
Type lhsType = expressionType(lhs);
|
Type lhsType = expressionType(lhs);
|
||||||
|
|||||||
+15
@@ -0,0 +1,15 @@
|
|||||||
|
class MyString(var content : String)
|
||||||
|
|
||||||
|
object Greeter {
|
||||||
|
fun sayHello(name : String): String {
|
||||||
|
var result = MyString(name)
|
||||||
|
result += "K"
|
||||||
|
return result.content
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private operator fun MyString.plus(suffix: String) : MyString = MyString("${this.content}$suffix")
|
||||||
|
|
||||||
|
fun box(): String {
|
||||||
|
return Greeter.sayHello("O")
|
||||||
|
}
|
||||||
+6
@@ -6435,6 +6435,12 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest {
|
|||||||
String fileName = JetTestUtils.navigationMetadata("compiler/testData/codegen/box/private/arrayConvention.kt");
|
String fileName = JetTestUtils.navigationMetadata("compiler/testData/codegen/box/private/arrayConvention.kt");
|
||||||
doTest(fileName);
|
doTest(fileName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("kt9855.kt")
|
||||||
|
public void testKt9855() throws Exception {
|
||||||
|
String fileName = JetTestUtils.navigationMetadata("compiler/testData/codegen/box/private/kt9855.kt");
|
||||||
|
doTest(fileName);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@TestMetadata("compiler/testData/codegen/box/privateConstructors")
|
@TestMetadata("compiler/testData/codegen/box/privateConstructors")
|
||||||
|
|||||||
Reference in New Issue
Block a user